diff options
-rw-r--r-- | backends/morphos/morphos_start.cpp | 2 | ||||
-rw-r--r-- | base/gameDetector.cpp | 10 | ||||
-rw-r--r-- | base/gameDetector.h | 25 | ||||
-rw-r--r-- | base/plugins.cpp | 28 | ||||
-rw-r--r-- | common/engine.h | 5 |
5 files changed, 36 insertions, 34 deletions
diff --git a/backends/morphos/morphos_start.cpp b/backends/morphos/morphos_start.cpp index fafba9683c..9cb104fe26 100644 --- a/backends/morphos/morphos_start.cpp +++ b/backends/morphos/morphos_start.cpp @@ -71,7 +71,7 @@ Library *TimerBase = NULL; OSystem_MorphOS *TheSystem = NULL; -OSystem *OSystem_MorphOS_create(int game_id, int gfx_mode, bool full_screen) +OSystem *OSystem_MorphOS_create(int gfx_mode, bool full_screen) { if (TheSystem) delete TheSystem; diff --git a/base/gameDetector.cpp b/base/gameDetector.cpp index a7f468f4fa..02183415af 100644 --- a/base/gameDetector.cpp +++ b/base/gameDetector.cpp @@ -189,7 +189,6 @@ GameDetector::GameDetector() { _gameDataPath = 0; _gameTempo = 0; _midi_driver = MD_AUTO; - _game.id = 0; _game.features = 0; _plugin = 0; @@ -632,7 +631,6 @@ bool GameDetector::parseMusicDriver(const char *s) { bool GameDetector::detectGame() { const TargetSettings *target; const char *realGame, *basename; - _game.id = 0; _gameText.clear(); realGame = g_config->get("gameid"); @@ -726,7 +724,7 @@ OSystem *GameDetector::createSystem() { #elif defined(X11_BACKEND) return OSystem_X11_create(); #elif defined(__MORPHOS__) - return OSystem_MorphOS_create(_game.id, _gfx_mode, _fullScreen); + return OSystem_MorphOS_create(_gfx_mode, _fullScreen); #elif defined(_WIN32_WCE) return OSystem_WINCE3_create(); #elif defined(MACOS_CARBON) @@ -742,12 +740,8 @@ OSystem *GameDetector::createSystem() { } Engine *GameDetector::createEngine(OSystem *system) { - Engine *engine = NULL; - assert(_plugin); - engine = _plugin->createInstance(this, system); - - return engine; + return _plugin->createInstance(this, system); } int GameDetector::getMidiDriverType() { diff --git a/base/gameDetector.h b/base/gameDetector.h index 32eaf96630..f5c2afe6ba 100644 --- a/base/gameDetector.h +++ b/base/gameDetector.h @@ -102,31 +102,6 @@ struct Language { typedef Engine *(*EngineFactory)(GameDetector *detector, OSystem *syst); -// Factory functions => no need to include the specific classes -// in this header. This serves two purposes: -// 1) Clean seperation from the game modules (scumm, simon) and the generic code -// 2) Faster (compiler doesn't have to parse lengthy header files) -#ifndef DISABLE_SCUMM -extern const TargetSettings *Engine_SCUMM_targetList(); -extern Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst); -#endif - -#ifndef DISABLE_SIMON -extern Engine *Engine_SIMON_create(GameDetector *detector, OSystem *syst); -extern const TargetSettings *Engine_SIMON_targetList(); -#endif - -#ifndef DISABLE_SKY -extern const TargetSettings *Engine_SKY_targetList(); -extern Engine *Engine_SKY_create(GameDetector *detector, OSystem *syst); -#endif - -#ifndef DISABLE_SWORD2 -extern const TargetSettings *Engine_SWORD2_targetList(); -extern Engine *Engine_SWORD2_create(GameDetector *detector, OSystem *syst); -#endif - - class GameDetector { typedef ScummVM::String String; diff --git a/base/plugins.cpp b/base/plugins.cpp index 174a097b4d..0b5b909558 100644 --- a/base/plugins.cpp +++ b/base/plugins.cpp @@ -25,6 +25,34 @@ #include "common/engine.h" +// Factory functions => no need to include the specific classes +// in this header. This serves two purposes: +// 1) Clean seperation from the game modules (scumm, simon) and the generic code +// 2) Faster (compiler doesn't have to parse lengthy header files) +#ifndef DISABLE_SCUMM +extern const TargetSettings *Engine_SCUMM_targetList(); +extern Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst); +#endif + +#ifndef DISABLE_SIMON +extern Engine *Engine_SIMON_create(GameDetector *detector, OSystem *syst); +extern const TargetSettings *Engine_SIMON_targetList(); +#endif + +#ifndef DISABLE_SKY +extern const TargetSettings *Engine_SKY_targetList(); +extern Engine *Engine_SKY_create(GameDetector *detector, OSystem *syst); +#endif + +#ifndef DISABLE_SWORD2 +extern const TargetSettings *Engine_SWORD2_targetList(); +extern Engine *Engine_SWORD2_create(GameDetector *detector, OSystem *syst); +#endif + + +#pragma mark - + + PluginManager *g_pluginManager = 0; diff --git a/common/engine.h b/common/engine.h index 5bd4857cef..d62a4de3cd 100644 --- a/common/engine.h +++ b/common/engine.h @@ -28,6 +28,11 @@ extern const char *gScummVMVersion; // e.g. "0.4.1" extern const char *gScummVMBuildDate; // e.g. "2003-06-24" extern const char *gScummVMFullVersion; // e.g. "ScummVM 0.4.1 (2003-06-24)" +// TODO: Get rid of these enums. Ideally, GIDs should be +// 100% local to the module they are defined in. Right now +// we can't make this change since some of the backends +// and also gui/launcher.cpp contain tests on the GID. +// Ideally, all those should be converted to something else. enum GameId { GID_SCUMM_FIRST = 1, GID_SCUMM_LAST = GID_SCUMM_FIRST + 99, |