diff options
-rw-r--r-- | backends/symbian/src/SymbianActions.cpp | 23 | ||||
-rw-r--r-- | backends/symbian/src/SymbianOS.cpp | 2 | ||||
-rw-r--r-- | backends/wince/CEActionsPocket.cpp | 21 | ||||
-rw-r--r-- | backends/wince/CEActionsSmartphone.cpp | 24 | ||||
-rw-r--r-- | backends/wince/wince-sdl.cpp | 10 | ||||
-rw-r--r-- | base/gameDetector.cpp | 18 | ||||
-rw-r--r-- | base/gameDetector.h | 1 | ||||
-rw-r--r-- | base/main.cpp | 4 | ||||
-rw-r--r-- | engines/scumm/plugin.cpp | 13 | ||||
-rw-r--r-- | engines/simon/game.cpp | 10 | ||||
-rw-r--r-- | engines/sword1/sword1.cpp | 2 | ||||
-rw-r--r-- | engines/sword2/sword2.cpp | 2 | ||||
-rw-r--r-- | gui/Actions.cpp | 12 | ||||
-rw-r--r-- | gui/Actions.h | 8 |
14 files changed, 72 insertions, 78 deletions
diff --git a/backends/symbian/src/SymbianActions.cpp b/backends/symbian/src/SymbianActions.cpp index 42679b889f..4844bc27b2 100644 --- a/backends/symbian/src/SymbianActions.cpp +++ b/backends/symbian/src/SymbianActions.cpp @@ -62,8 +62,8 @@ const int ACTIONS_DEFAULT[ACTION_LAST] = { 0, 0, 0, 0, 0x11a, 0x11b, SDLK_MENU, #endif // creator function according to Factory Pattern -void SymbianActions::init(const Common::String &gameid) { - _instance = new SymbianActions(gameid); +void SymbianActions::init() { + _instance = new SymbianActions(); } @@ -83,8 +83,8 @@ int SymbianActions::version() { return ACTION_VERSION; } -SymbianActions::SymbianActions(const Common::String &gameid) : - Actions(gameid) { +SymbianActions::SymbianActions() + : Actions() { int i; for (i = 0; i < ACTION_LAST; i++) { @@ -121,17 +121,18 @@ void SymbianActions::initInstanceMain(OSystem *mainSystem) { } void SymbianActions::initInstanceGame() { - bool is_simon = (strncmp(_gameid.c_str(), "simon", 5) == 0); - bool is_sky = (_gameid == "sky"); - bool is_queen = (_gameid == "queen"); - bool is_gob = (strncmp(_gameid.c_str(), "gob", 3) == 0); - bool is_ite = ((strncmp(_gameid.c_str(), "ite", 3) == 0) || - (strncmp(_gameid.c_str(), "ihnm", 4) == 0)); + String gameid(ConfMan.get("gameid")); + bool is_simon = (strncmp(gameid.c_str(), "simon", 5) == 0); + bool is_sky = (gameid == "sky"); + bool is_queen = (gameid == "queen"); + bool is_gob = (strncmp(gameid.c_str(), "gob", 3) == 0); + bool is_ite = ((strncmp(gameid.c_str(), "ite", 3) == 0) || + (strncmp(gameid.c_str(), "ihnm", 4) == 0)); Actions::initInstanceGame(); // See if a right click mapping could be needed - if (is_sky || _gameid == "samnmax" || is_gob) + if (is_sky || gameid == "samnmax" || is_gob) _right_click_needed = true; // Initialize keys for different actions diff --git a/backends/symbian/src/SymbianOS.cpp b/backends/symbian/src/SymbianOS.cpp index d7539fcfe9..13dac270fd 100644 --- a/backends/symbian/src/SymbianOS.cpp +++ b/backends/symbian/src/SymbianOS.cpp @@ -377,7 +377,7 @@ void OSystem_SDL_Symbian::setWindowCaption(const char *caption) { } void OSystem_SDL_Symbian::check_mappings() { - if (!GUI::Actions::Instance()->_gameid.size() || GUI::Actions::Instance()->initialized()) + if (ConfMan.get("gameid").empty() || GUI::Actions::Instance()->initialized()) return; GUI::Actions::Instance()->initInstanceGame(); diff --git a/backends/wince/CEActionsPocket.cpp b/backends/wince/CEActionsPocket.cpp index 4050cd136b..3c2b3e3e4d 100644 --- a/backends/wince/CEActionsPocket.cpp +++ b/backends/wince/CEActionsPocket.cpp @@ -98,21 +98,22 @@ void CEActionsPocket::initInstanceMain(OSystem *mainSystem) { } void CEActionsPocket::initInstanceGame() { - bool is_simon = (strncmp(_gameid.c_str(), "simon", 5) == 0); - bool is_sword1 = (_gameid == "sword1"); - bool is_sword2 = (strcmp(_gameid.c_str(), "sword2") == 0); - bool is_queen = (_gameid == "queen"); - bool is_sky = (_gameid == "sky"); - bool is_comi = (strncmp(_gameid.c_str(), "comi", 4) == 0); - bool is_gob = (strncmp(_gameid.c_str(), "gob", 3) == 0); - bool is_ite = ((strncmp(_gameid.c_str(), "ite", 3) == 0) || - (strncmp(_gameid.c_str(), "ihnm", 4) == 0)); + String gameid(ConfMan.get("gameid")); + bool is_simon = (strncmp(gameid.c_str(), "simon", 5) == 0); + bool is_sword1 = (gameid == "sword1"); + bool is_sword2 = (strcmp(gameid.c_str(), "sword2") == 0); + bool is_queen = (gameid == "queen"); + bool is_sky = (gameid == "sky"); + bool is_comi = (strncmp(gameid.c_str(), "comi", 4) == 0); + bool is_gob = (strncmp(gameid.c_str(), "gob", 3) == 0); + bool is_ite = ((strncmp(gameid.c_str(), "ite", 3) == 0) || + (strncmp(gameid.c_str(), "ihnm", 4) == 0)); GUI_Actions::initInstanceGame(); // See if a right click mapping could be needed if (is_sword1 || is_sword2 || is_sky || is_queen || is_comi || is_gob || - _gameid == "samnmax") + gameid == "samnmax") _right_click_needed = true; // See if a "hide toolbar" mapping could be needed diff --git a/backends/wince/CEActionsSmartphone.cpp b/backends/wince/CEActionsSmartphone.cpp index 6f1ee62701..5817fac744 100644 --- a/backends/wince/CEActionsSmartphone.cpp +++ b/backends/wince/CEActionsSmartphone.cpp @@ -60,8 +60,8 @@ const int ACTIONS_SMARTPHONE_DEFAULT[] = { 0x111, 0x112, 0x114, 0x113, 0x11a, 0x const int ACTIONS_SMARTPHONE_DEFAULT[] = { '4', '6', '8', '2', 0x11a, 0x11b, '0', VK_ESCAPE, '9', 0, VK_RETURN }; #endif -void CEActionsSmartphone::init(const Common::String &gameid) { - _instance = new CEActionsSmartphone(gameid); +void CEActionsSmartphone::init() { + _instance = new CEActionsSmartphone(); } @@ -81,9 +81,8 @@ int CEActionsSmartphone::version() { return SMARTPHONE_ACTION_VERSION; } -CEActionsSmartphone::CEActionsSmartphone(const Common::String &gameid) : -GUI::Actions(gameid) -{ +CEActionsSmartphone::CEActionsSmartphone() +: GUI::Actions() { int i; for (i=0; i<SMARTPHONE_ACTION_LAST; i++) { @@ -112,17 +111,18 @@ void CEActionsSmartphone::initInstanceMain(OSystem *mainSystem) { } void CEActionsSmartphone::initInstanceGame() { - bool is_simon = (strncmp(_gameid.c_str(), "simon", 5) == 0); - bool is_sky = (_gameid == "sky"); - bool is_queen = (_gameid == "queen"); - bool is_gob = (strncmp(_gameid.c_str(), "gob", 3) == 0); - bool is_ite = ((strncmp(_gameid.c_str(), "ite", 3) == 0) || - (strncmp(_gameid.c_str(), "ihnm", 4) == 0)); + String gameid(ConfMan.get("gameid")); + bool is_simon = (strncmp(gameid.c_str(), "simon", 5) == 0); + bool is_sky = (gameid == "sky"); + bool is_queen = (gameid == "queen"); + bool is_gob = (strncmp(gameid.c_str(), "gob", 3) == 0); + bool is_ite = ((strncmp(gameid.c_str(), "ite", 3) == 0) || + (strncmp(gameid.c_str(), "ihnm", 4) == 0)); GUI_Actions::initInstanceGame(); // See if a right click mapping could be needed - if (is_sky || _gameid == "samnmax" || is_gob) + if (is_sky || gameid == "samnmax" || is_gob) _right_click_needed = true; // Initialize keys for different actions diff --git a/backends/wince/wince-sdl.cpp b/backends/wince/wince-sdl.cpp index 885e2ce242..1f877e77ba 100644 --- a/backends/wince/wince-sdl.cpp +++ b/backends/wince/wince-sdl.cpp @@ -522,7 +522,7 @@ bool OSystem_WINCE3::checkOggHighSampleRate() { void OSystem_WINCE3::get_sample_rate() { // Force at least medium quality FM synthesis for FOTAQ - Common::String gameid(GUI::Actions::Instance()->_gameid); + Common::String gameid(ConfMan.get("gameid")); if (gameid == "queen") { if (!((ConfMan.hasKey("FM_high_quality") && ConfMan.getBool("FM_high_quality")) || (ConfMan.hasKey("FM_medium_quality") && ConfMan.getBool("FM_medium_quality")))) { @@ -653,9 +653,9 @@ bool OSystem_WINCE3::setSoundCallback(SoundProc proc, void *param) { void OSystem_WINCE3::check_mappings() { CEActionsPocket *instance; - Common::String gameid(GUI::Actions::Instance()->_gameid); + Common::String gameid(ConfMan.get("gameid")); - if (!gameid.size() || GUI_Actions::Instance()->initialized()) + if (gameid.empty() || GUI_Actions::Instance()->initialized()) return; GUI_Actions::Instance()->initInstanceGame(); @@ -707,10 +707,10 @@ void OSystem_WINCE3::check_mappings() { } void OSystem_WINCE3::update_game_settings() { - Common::String gameid(GUI::Actions::Instance()->_gameid); + Common::String gameid(ConfMan.get("gameid")); // Finish panel initialization - if (!_panelInitialized && gameid.size()) { + if (!_panelInitialized && !gameid.empty()) { Panel *panel; _panelInitialized = true; // Add the main panel diff --git a/base/gameDetector.cpp b/base/gameDetector.cpp index 6889d47b99..ad74752fcf 100644 --- a/base/gameDetector.cpp +++ b/base/gameDetector.cpp @@ -261,7 +261,7 @@ GameDescriptor GameDetector::findGame(const String &gameName, const Plugin **plu PluginList::const_iterator iter = plugins.begin(); for (iter = plugins.begin(); iter != plugins.end(); ++iter) { result = (*iter)->findGame(gameName.c_str()); - if (result.gameid.size() > 0) { + if (!result.gameid.empty()) { if (plugin) *plugin = *iter; break; @@ -581,14 +581,12 @@ void GameDetector::setTarget(const String &target) { _targetName = target; ConfMan.setActiveDomain(target); + // Make sure the gameid is set in the config manager, and that it is lowercase. + String gameid(_targetName); if (ConfMan.hasKey("gameid")) - _gameid = ConfMan.get("gameid"); - else - _gameid = _targetName; - - // TODO: In the future, simply insert the gameid into the transient domain. - // That way, all code (including backends) can reliably access it. - //ConfMan.set("gameid", _gameid, Common::ConfigManager::kTransientDomain); + gameid = ConfMan.get("gameid"); + gameid.toLowercase(); + ConfMan.set("gameid", gameid); } const Plugin *GameDetector::detectMain() { @@ -599,8 +597,8 @@ const Plugin *GameDetector::detectMain() { return 0; } - printf("Looking for %s\n", _gameid.c_str()); - GameDescriptor game = findGame(_gameid, &plugin); + printf("Looking for %s\n", ConfMan.get("gameid").c_str()); + GameDescriptor game = findGame(ConfMan.get("gameid"), &plugin); if (plugin == 0) { printf("Failed game detection\n"); diff --git a/base/gameDetector.h b/base/gameDetector.h index 14ff9e071a..dc09262368 100644 --- a/base/gameDetector.h +++ b/base/gameDetector.h @@ -70,7 +70,6 @@ public: const Plugin *detectMain(); String _targetName; - String _gameid; public: static GameDescriptor findGame(const String &gameName, const Plugin **plugin = NULL); diff --git a/base/main.cpp b/base/main.cpp index be4502875b..1b01bdcbd5 100644 --- a/base/main.cpp +++ b/base/main.cpp @@ -181,7 +181,7 @@ static int runGame(const Plugin *plugin, GameDetector &detector, OSystem &system // Set the window caption to the game name Common::String caption(ConfMan.get("description", detector._targetName)); - Common::String desc = GameDetector::findGame(detector._gameid).description; + Common::String desc = GameDetector::findGame(ConfMan.get("gameid")).description; if (caption.empty() && !desc.empty()) caption = desc; if (caption.empty()) @@ -292,7 +292,7 @@ extern "C" int scummvm_main(int argc, char *argv[]) { #if defined(__SYMBIAN32__) || defined(_WIN32_WCE) // init keymap support here: we wanna move this somewhere else? - GUI::Actions::init(detector._gameid); + GUI::Actions::init(ConfMan.get("gameid")); #endif #ifdef PALMOS_68K diff --git a/engines/scumm/plugin.cpp b/engines/scumm/plugin.cpp index a7657b99bf..ac9bcfc0bd 100644 --- a/engines/scumm/plugin.cpp +++ b/engines/scumm/plugin.cpp @@ -1620,15 +1620,15 @@ DetectedGameList Engine_SCUMM_detectGames(const FSList &fslist) { */ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) { Engine *engine; + const char *gameid = ConfMan.get("gameid").c_str(); // We start by checking whether the specified game ID is obsolete. // If that is the case, we automatically upgrade the target to use // the correct new game ID (and platform, if specified). - const ObsoleteGameID *o = obsoleteGameIDsTable; - while (o->from) { - if (!scumm_stricmp(detector->_gameid.c_str(), o->from)) { + for (const ObsoleteGameID *o = obsoleteGameIDsTable; o->from; ++o) { + if (!scumm_stricmp(gameid, o->from)) { // Match found, perform upgrade - detector->_gameid = o->to; + gameid = o->to; ConfMan.set("gameid", o->to); if (o->platform != Common::kPlatformUnknown) @@ -1638,14 +1638,13 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) { ConfMan.flushToDisk(); break; } - o++; } // Lookup the game ID in our database. If this lookup fails, then // the game ID is unknown, and we have to abort. const GameSettings *g = gameVariantsTable; while (g->gameid) { - if (!scumm_stricmp(detector->_gameid.c_str(), g->gameid)) + if (!scumm_stricmp(gameid, g->gameid)) break; g++; } @@ -1655,7 +1654,7 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) { // We now want to calculate the MD5 of the games detection file, so that we // can store it in savegames etc.. - const char *gameid = g->gameid; + gameid = g->gameid; char detectName[256], tempName[256]; uint8 md5sum[16]; SubstResFileNames subst = { 0, 0, kGenAsIs }; diff --git a/engines/simon/game.cpp b/engines/simon/game.cpp index 9e83b4d9ca..29d1df7bfb 100644 --- a/engines/simon/game.cpp +++ b/engines/simon/game.cpp @@ -113,11 +113,12 @@ DetectedGameList Engine_SIMON_detectGames(const FSList &fslist) { } Engine *Engine_SIMON_create(GameDetector *detector, OSystem *syst) { - const ObsoleteGameID *o = obsoleteGameIDsTable; - while (o->from) { - if (!scumm_stricmp(detector->_gameid.c_str(), o->from)) { - detector->_gameid = o->to; + const char *gameid = ConfMan.get("gameid").c_str(); + for (const ObsoleteGameID *o = obsoleteGameIDsTable; o->from; ++o) { + if (!scumm_stricmp(gameid, o->from)) { + // Match found, perform upgrade + gameid = o->to; ConfMan.set("gameid", o->to); if (o->platform != Common::kPlatformUnknown) @@ -127,7 +128,6 @@ Engine *Engine_SIMON_create(GameDetector *detector, OSystem *syst) { ConfMan.flushToDisk(); break; } - o++; } return new Simon::SimonEngine(syst); diff --git a/engines/sword1/sword1.cpp b/engines/sword1/sword1.cpp index 2b5436f0b6..7db5e26e2e 100644 --- a/engines/sword1/sword1.cpp +++ b/engines/sword1/sword1.cpp @@ -134,7 +134,7 @@ void SwordEngine::errorString(const char *buf1, char *buf2) { SwordEngine::SwordEngine(GameDetector *detector, OSystem *syst) : Engine(syst) { - if (0 == scumm_stricmp(detector->_gameid.c_str(), "sword1demo")) + if (0 == scumm_stricmp(ConfMan.get("gameid").c_str(), "sword1demo")) _features = GF_DEMO; else _features = 0; diff --git a/engines/sword2/sword2.cpp b/engines/sword2/sword2.cpp index abd2ce5291..32ce29c0f0 100644 --- a/engines/sword2/sword2.cpp +++ b/engines/sword2/sword2.cpp @@ -129,7 +129,7 @@ Sword2Engine::Sword2Engine(GameDetector *detector, OSystem *syst) : Engine(syst) Common::File::addDefaultDirectory(_gameDataPath + "sword2/"); Common::File::addDefaultDirectory(_gameDataPath + "video/"); - if (0 == scumm_stricmp(detector->_gameid.c_str(), "sword2demo")) + if (0 == scumm_stricmp(ConfMan.get("gameid").c_str(), "sword2demo")) _features = GF_DEMO; else _features = 0; diff --git a/gui/Actions.cpp b/gui/Actions.cpp index 79c7005733..53af60734b 100644 --- a/gui/Actions.cpp +++ b/gui/Actions.cpp @@ -39,8 +39,8 @@ Actions* Actions::Instance() { return _instance; } -Actions::Actions(const Common::String &gameid) : - _gameid(gameid), _mapping_active(false), _initialized(false) +Actions::Actions() : + _mapping_active(false), _initialized(false) { } @@ -49,15 +49,15 @@ Actions::~Actions() { } // call the correct object creator function according to the Factory Pattern -void Actions::init(const Common::String &gameid) { +void Actions::init() { #ifdef _WIN32_WCE // For WinCE: now use software + Factory pattern to create correct objects if (!CEDevice::isSmartphone()) - CEActionsPocket::init(gameid); + CEActionsPocket::init(); else - CEActionsSmartphone::init(gameid); + CEActionsSmartphone::init(); #elif defined(__SYMBIAN32__) - SymbianActions::init(gameid); + SymbianActions::init(); #endif } diff --git a/gui/Actions.h b/gui/Actions.h index 40a72b4beb..3e9bd4d8f8 100644 --- a/gui/Actions.h +++ b/gui/Actions.h @@ -37,7 +37,7 @@ class Actions { public: static Actions* Instance(); - static void init(const Common::String &gameid); + static void init(); virtual void initInstanceMain(OSystem *mainSystem); virtual void initInstanceGame(); bool initialized(); @@ -65,12 +65,8 @@ public: virtual ~Actions(); -public: - // Since _gameid is const it's safe to let the public read it. - const Common::String _gameid; - protected: - Actions(const Common::String &gameid); + Actions(); protected: static Actions* _instance; |