aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backends/symbian/src/SymbianActions.cpp23
-rw-r--r--backends/symbian/src/SymbianOS.cpp2
-rw-r--r--backends/wince/CEActionsPocket.cpp21
-rw-r--r--backends/wince/CEActionsSmartphone.cpp24
-rw-r--r--backends/wince/wince-sdl.cpp10
-rw-r--r--base/gameDetector.cpp18
-rw-r--r--base/gameDetector.h1
-rw-r--r--base/main.cpp4
-rw-r--r--engines/scumm/plugin.cpp13
-rw-r--r--engines/simon/game.cpp10
-rw-r--r--engines/sword1/sword1.cpp2
-rw-r--r--engines/sword2/sword2.cpp2
-rw-r--r--gui/Actions.cpp12
-rw-r--r--gui/Actions.h8
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;