aboutsummaryrefslogtreecommitdiff
path: root/engines/drascula
diff options
context:
space:
mode:
Diffstat (limited to 'engines/drascula')
-rw-r--r--engines/drascula/detection.cpp21
-rw-r--r--engines/drascula/drascula.cpp8
-rw-r--r--engines/drascula/drascula.h4
3 files changed, 11 insertions, 22 deletions
diff --git a/engines/drascula/detection.cpp b/engines/drascula/detection.cpp
index 057b8083c8..0bee2b534d 100644
--- a/engines/drascula/detection.cpp
+++ b/engines/drascula/detection.cpp
@@ -164,18 +164,15 @@ static const Common::ADParams detectionParams = {
Common::kADFlagAugmentPreferredTarget
};
-ADVANCED_DETECTOR_DEFINE_PLUGIN(DRASCULA, Drascula::DrasculaEngine, detectionParams);
-
-REGISTER_PLUGIN(DRASCULA, "Drascula Engine", "Drascula Engine (C) 2000 Alcachofa Soft, 1996 (C) Digital Dreams Multimedia, 1994 (C) Emilio de Paz");
-
-namespace Drascula {
-
-bool DrasculaEngine::initGame() {
- Common::EncapsulatedADGameDesc encapsulatedDesc = Common::AdvancedDetector::detectBestMatchingGame(detectionParams);
- _gameDescription = (const DrasculaGameDescription *)(encapsulatedDesc.realDesc);
-
- return (_gameDescription != 0);
+static bool Engine_DRASCULA_createInstance(OSystem *syst, Engine **engine, Common::EncapsulatedADGameDesc encapsulatedDesc) {
+ const Drascula::DrasculaGameDescription *gd = (const Drascula::DrasculaGameDescription *)(encapsulatedDesc.realDesc);
+ if (gd) {
+ *engine = new Drascula::DrasculaEngine(syst, gd);
+ }
+ return gd != 0;
}
-} // End of namespace Drascula
+ADVANCED_DETECTOR_DEFINE_PLUGIN(DRASCULA, Engine_DRASCULA_createInstance, detectionParams);
+
+REGISTER_PLUGIN(DRASCULA, "Drascula Engine", "Drascula Engine (C) 2000 Alcachofa Soft, 1996 (C) Digital Dreams Multimedia, 1994 (C) Emilio de Paz");
diff --git a/engines/drascula/drascula.cpp b/engines/drascula/drascula.cpp
index 8432aea9f2..65f4f717a7 100644
--- a/engines/drascula/drascula.cpp
+++ b/engines/drascula/drascula.cpp
@@ -53,7 +53,7 @@ static const GameSettings drasculaSettings[] = {
{NULL, NULL, 0, 0, NULL}
};
-DrasculaEngine::DrasculaEngine(OSystem *syst) : Engine(syst) {
+DrasculaEngine::DrasculaEngine(OSystem *syst, const DrasculaGameDescription *gameDesc) : Engine(syst), _gameDescription(gameDesc) {
// Setup mixer
if (!_mixer->isReady()) {
@@ -119,12 +119,6 @@ static char poder_t[6][88] = {TEXT11, TEXT109, TEXT111, TEXT110, TEXT115, TEXT11
static char poder_v[6][14] = {"11.als", "109.als", "111.als", "110.als", "115.als", "116.als"};
int DrasculaEngine::init() {
- // Detect game
- if (!initGame()) {
- GUIErrorMessage("No valid games were found in the specified directory.");
- return -1;
- }
-
// Initialize backend
_system->beginGFXTransaction();
initCommonGFX(false);
diff --git a/engines/drascula/drascula.h b/engines/drascula/drascula.h
index 221664aa63..df581b1700 100644
--- a/engines/drascula/drascula.h
+++ b/engines/drascula/drascula.h
@@ -337,10 +337,8 @@ protected:
int go();
// void shutdown();
- bool initGame();
-
public:
- DrasculaEngine(OSystem *syst);
+ DrasculaEngine(OSystem *syst, const DrasculaGameDescription *gameDesc);
virtual ~DrasculaEngine();
int getGameId() {
return _gameId;