diff options
Diffstat (limited to 'engines/drascula')
-rw-r--r-- | engines/drascula/detection.cpp | 21 | ||||
-rw-r--r-- | engines/drascula/drascula.cpp | 8 | ||||
-rw-r--r-- | engines/drascula/drascula.h | 4 |
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; |