diff options
-rw-r--r-- | base/engine.cpp | 4 | ||||
-rw-r--r-- | base/engine.h | 4 | ||||
-rw-r--r-- | base/gameDetector.cpp | 2 | ||||
-rw-r--r-- | base/gameDetector.h | 3 | ||||
-rw-r--r-- | queen/queen.cpp | 6 | ||||
-rw-r--r-- | queen/queen.h | 4 | ||||
-rw-r--r-- | scumm/scummvm.cpp | 8 | ||||
-rw-r--r-- | simon/simon.cpp | 4 | ||||
-rw-r--r-- | simon/simon.h | 2 | ||||
-rw-r--r-- | sky/sky.cpp | 12 | ||||
-rw-r--r-- | sky/sky.h | 4 | ||||
-rw-r--r-- | sword2/sword2.cpp | 5 | ||||
-rw-r--r-- | sword2/sword2.h | 7 |
13 files changed, 36 insertions, 29 deletions
diff --git a/base/engine.cpp b/base/engine.cpp index 50bccb4746..4e8bb4a749 100644 --- a/base/engine.cpp +++ b/base/engine.cpp @@ -32,10 +32,10 @@ /* FIXME - BIG HACK for MidiEmu */ Engine *g_engine = 0; -Engine::Engine(GameDetector *detector, OSystem *syst) +Engine::Engine(OSystem *syst) : _system(syst), _gameDataPath(ConfMan.get("path")) { g_engine = this; - _mixer = detector->createMixer(); + _mixer = GameDetector::createMixer(); _timer = g_timer; diff --git a/base/engine.h b/base/engine.h index 9d77668c40..a37cd08198 100644 --- a/base/engine.h +++ b/base/engine.h @@ -30,9 +30,7 @@ extern const char *gScummVMBuildDate; // e.g. "2003-06-24" extern const char *gScummVMFullVersion; // e.g. "ScummVM 0.4.1 (2003-06-24)" class SoundMixer; -class GameDetector; class Timer; -struct GameSettings; class Engine { public: @@ -44,7 +42,7 @@ protected: const Common::String _gameDataPath; public: - Engine(GameDetector *detector, OSystem *syst); + Engine(OSystem *syst); virtual ~Engine(); // Invoke the main engine loop using this method diff --git a/base/gameDetector.cpp b/base/gameDetector.cpp index 6dd67aa8bf..ef12840b24 100644 --- a/base/gameDetector.cpp +++ b/base/gameDetector.cpp @@ -500,9 +500,11 @@ bool GameDetector::detectGame() { _game = findGame(realGame, &_plugin); if (_game.gameName) { + _gameName = _game.gameName; printf("Trying to start game '%s'\n", _game.description); return true; } else { + _gameName.clear(); printf("Failed game detection\n"); return false; } diff --git a/base/gameDetector.h b/base/gameDetector.h index 1bad32078d..d57cdb5b06 100644 --- a/base/gameDetector.h +++ b/base/gameDetector.h @@ -64,7 +64,8 @@ public: bool detectMain(); String _targetName; - GameSettings _game; + String _gameName; + GameSettings _game; // TODO: Eventually get rid of _game or at least make it protected const Plugin *_plugin; bool _dumpScripts; diff --git a/queen/queen.cpp b/queen/queen.cpp index 08e2bfb43c..5e6cbd9a14 100644 --- a/queen/queen.cpp +++ b/queen/queen.cpp @@ -88,7 +88,7 @@ REGISTER_PLUGIN("Flight of the Amazon Queen", Engine_QUEEN_gameList, Engine_QUEE namespace Queen { QueenEngine::QueenEngine(GameDetector *detector, OSystem *syst) - : Engine(detector, syst) { + : Engine(syst) { if (!_mixer->bindToSystem(syst)) warning("Sound initialisation failed."); @@ -97,7 +97,7 @@ QueenEngine::QueenEngine(GameDetector *detector, OSystem *syst) _debugMode = ConfMan.hasKey("debuglevel"); _debugLevel = ConfMan.getInt("debuglevel"); - _detector = detector; + _detectname = detector->_game.detectname; _fastMode = 0; @@ -218,7 +218,7 @@ void QueenEngine::go() { } void QueenEngine::initialise(void) { - _resource = new Resource(_gameDataPath, _detector->_game.detectname, _system->get_savefile_manager(), getSavePath()); + _resource = new Resource(_gameDataPath, _detectname, _system->get_savefile_manager(), getSavePath()); _input = new Input(_resource->getLanguage(), _system); _display = new Display(_system, _input); _graphics = new Graphics(_display, _input, _resource); diff --git a/queen/queen.h b/queen/queen.h index 6596654320..8151b87920 100644 --- a/queen/queen.h +++ b/queen/queen.h @@ -30,6 +30,8 @@ #include "queen/resource.h" #include "queen/logic.h" +class GameDetector; + namespace Queen { class Graphics; @@ -57,7 +59,7 @@ protected: Display *_display; Sound *_sound; - GameDetector *_detector; // necessary for music + const char *_detectname; // necessary for music public: QueenEngine(GameDetector *detector, OSystem *syst); diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp index d339129793..691072affc 100644 --- a/scumm/scummvm.cpp +++ b/scumm/scummvm.cpp @@ -285,7 +285,7 @@ static const ScummGameSettings scumm_settings[] = { }; ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs) - : Engine(detector, syst), + : Engine(syst), _gameId(gs.id), _version(gs.version), _features(gs.features), @@ -688,7 +688,7 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS } else if (((_midiDriver == MD_PCJR) || (_midiDriver == MD_PCSPK)) && ((_version > 2) && (_version < 5))) { _musicEngine = new Player_V2(this, _midiDriver != MD_PCSPK); } else if (_version > 2) { - MidiDriver *driver = detector->createMidi(_midiDriver); + MidiDriver *driver = GameDetector::createMidi(_midiDriver); if (driver && _native_mt32) driver->property (MidiDriver::PROP_CHANNEL_MASK, 0x03FE); _musicEngine = _imuse = IMuse::create(syst, _mixer, driver); @@ -2795,12 +2795,12 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) { const ScummGameSettings *g = scumm_settings; while (g->gameName) { - if (!scumm_stricmp(detector->_game.gameName, g->gameName)) + if (!scumm_stricmp(detector->_gameName.c_str(), g->gameName)) break; g++; } if (!g->gameName) - error("Invalid game '%s'\n", detector->_game.gameName); + error("Invalid game '%s'\n", detector->_gameName.c_str()); ScummGameSettings game = *g; diff --git a/simon/simon.cpp b/simon/simon.cpp index b85af55979..55c9c0209c 100644 --- a/simon/simon.cpp +++ b/simon/simon.cpp @@ -234,7 +234,7 @@ static const GameSpecificSettings simon2dos_settings = { SimonEngine::SimonEngine(GameDetector *detector, OSystem *syst) - : Engine(detector, syst), midi (syst) { + : Engine(syst), midi (syst) { _vc_ptr = 0; _game_offsets_ptr = 0; @@ -507,7 +507,7 @@ SimonEngine::SimonEngine(GameDetector *detector, OSystem *syst) set_volume(ConfMan.getInt("sfx_volume")); // Setup midi driver - MidiDriver *driver = detector->createMidi(GameDetector::detectMusicDriver(detector->_game.midi)); + MidiDriver *driver = GameDetector::createMidi(GameDetector::detectMusicDriver(detector->_game.midi)); if (!driver) driver = MidiDriver_ADLIB_create(_mixer); else if (ConfMan.getBool("native_mt32")) diff --git a/simon/simon.h b/simon/simon.h index bd386eaba1..7f49dc8e84 100644 --- a/simon/simon.h +++ b/simon/simon.h @@ -29,6 +29,8 @@ #include "sound/mixer.h" #include "simon/sound.h" +class GameDetector; + namespace Simon { /* Various other settings */ diff --git a/sky/sky.cpp b/sky/sky.cpp index 781e91b39e..71c055ae53 100644 --- a/sky/sky.cpp +++ b/sky/sky.cpp @@ -113,7 +113,7 @@ void **SkyEngine::_itemList[300]; SystemVars SkyEngine::_systemVars = {0, 0, 0, 0, 4316, 0, 0, false, false }; SkyEngine::SkyEngine(GameDetector *detector, OSystem *syst) - : Engine(detector, syst) { + : Engine(syst) { if (!_mixer->bindToSystem(syst)) warning("Sound initialisation failed."); @@ -122,7 +122,7 @@ SkyEngine::SkyEngine(GameDetector *detector, OSystem *syst) _debugMode = ConfMan.hasKey("debuglevel"); _debugLevel = ConfMan.getInt("debuglevel"); - _detector = detector; + _midi = detector->_game.midi; _floppyIntro = ConfMan.getBool("floppy_intro"); @@ -256,16 +256,16 @@ void SkyEngine::initialise(void) { _systemVars.gameVersion = _skyDisk->determineGameVersion(); - int midiDriver = GameDetector::detectMusicDriver(_detector->_game.midi); + int midiDriver = GameDetector::detectMusicDriver(_midi); if (midiDriver == MD_ADLIB) { _systemVars.systemFlags |= SF_SBLASTER; _skyMusic = new SkyAdlibMusic(_mixer, _skyDisk, _system); } else { _systemVars.systemFlags |= SF_ROLAND; if (ConfMan.getBool("native_mt32")) - _skyMusic = new SkyMT32Music(_detector->createMidi(midiDriver), _skyDisk, _system); + _skyMusic = new SkyMT32Music(GameDetector::createMidi(midiDriver), _skyDisk, _system); else - _skyMusic = new SkyGmMusic(_detector->createMidi(midiDriver), _skyDisk, _system); + _skyMusic = new SkyGmMusic(GameDetector::createMidi(midiDriver), _skyDisk, _system); } if (isCDVersion()) { @@ -289,7 +289,7 @@ void SkyEngine::initialise(void) { _skyLogic = new SkyLogic(_skyScreen, _skyDisk, _skyText, _skyMusic, _skyMouse, _skySound); _skyMouse->useLogicInstance(_skyLogic); - _timer = Engine::_timer; // initialize timer *after* _skyScreen has been initialized. + // initialize timer *after* _skyScreen has been initialized. _timer->installTimerProc(&timerHandler, 1000000 / 50, this); //call 50 times per second _skyControl = new SkyControl(_skyScreen, _skyDisk, _skyMouse, _skyText, _skyMusic, _skyLogic, _skySound, _system, getSavePath()); @@ -25,6 +25,8 @@ #include "stdafx.h" #include "base/engine.h" +class GameDetector; + struct SystemVars { uint32 systemFlags; uint32 gameVersion; @@ -75,7 +77,7 @@ protected: SkyMusicBase *_skyMusic; SkyIntro *_skyIntro; - GameDetector *_detector; // necessary for music + int _midi; // necessary for music public: SkyEngine(GameDetector *detector, OSystem *syst); diff --git a/sword2/sword2.cpp b/sword2/sword2.cpp index a5d1a56e5e..a63ceb3169 100644 --- a/sword2/sword2.cpp +++ b/sword2/sword2.cpp @@ -54,7 +54,7 @@ static const GameSettings sword2_settings[] = { /* Broken Sword 2 */ {"sword2", "Broken Sword II", MDT_ADLIB | MDT_NATIVE, GF_DEFAULT_TO_1X_SCALER, "players.clu" }, {"sword2alt", "Broken Sword II (alt)", MDT_ADLIB | MDT_NATIVE, GF_DEFAULT_TO_1X_SCALER, "r2ctlns.ocx" }, - {"sword2demo", "Broken Sword II (Demo)", MDT_ADLIB | MDT_NATIVE, GF_DEFAULT_TO_1X_SCALER | GF_DEMO, "players.clu" }, + {"sword2demo", "Broken Sword II (Demo)", MDT_ADLIB | MDT_NATIVE, GF_DEFAULT_TO_1X_SCALER | Sword2::GF_DEMO, "players.clu" }, {NULL, NULL, MDT_NONE, 0, NULL} }; @@ -102,9 +102,8 @@ Sound *g_sound = NULL; Display *g_display = NULL; Sword2Engine::Sword2Engine(GameDetector *detector, OSystem *syst) - : Engine(detector, syst) { + : Engine(syst) { - _detector = detector; g_sword2 = this; _debugger = NULL; _features = detector->_game.features; diff --git a/sword2/sword2.h b/sword2/sword2.h index b8d2094cd9..624c69c289 100644 --- a/sword2/sword2.h +++ b/sword2/sword2.h @@ -37,12 +37,14 @@ #include "sword2/driver/d_sound.h" #include "sword2/driver/d_draw.h" +class GameDetector; + +namespace Sword2 { + enum { GF_DEMO = 1 << 0 }; -namespace Sword2 { - // Bodge for PCF76 version so that their demo CD can be labelled "PCF76" // rather than "RBSII1" @@ -141,7 +143,6 @@ public: void go(void); void parseEvents(void); int32 InitialiseGame(void); - GameDetector *_detector; uint32 _features; char *_targetName; // target name for saves |