Refactor GUI options update into a function in Common: updateGameGUIOptions.

svn-id: r42446
This commit is contained in:
Johannes Schickel 2009-07-13 18:47:32 +00:00
parent 88e0fc2c43
commit 51a9bfc9e2
4 changed files with 18 additions and 14 deletions

View file

@ -24,6 +24,7 @@
#include "common/util.h"
#include "common/system.h"
#include "common/config-manager.h"
#include "gui/debugger.h"
#include "engines/engine.h"
@ -420,6 +421,14 @@ String getGameGUIOptionsDescription(uint32 options) {
return res;
}
void updateGameGUIOptions(const uint32 options) {
if ((options && !ConfMan.hasKey("guioptions")) ||
(ConfMan.hasKey("guioptions") && options != parseGameGUIOptions(ConfMan.get("guioptions")))) {
ConfMan.set("guioptions", getGameGUIOptionsDescription(options));
ConfMan.flushToDisk();
}
}
} // End of namespace Common

View file

@ -284,6 +284,13 @@ bool checkGameGUIOption(GameGUIOption option, const String &str);
uint32 parseGameGUIOptions(const String &str);
String getGameGUIOptionsDescription(uint32 options);
/**
* Updates the GUI options of the current config manager
* domain, when they differ to the ones passed as
* parameter.
*/
void updateGameGUIOptions(const uint32 options);
} // End of namespace Common

View file

@ -296,13 +296,7 @@ Common::Error AdvancedMetaEngine::createInstance(OSystem *syst, Engine **engine)
// If the GUI options were updated, we catch this here and update them in the users config
// file transparently.
const uint32 guiOptions = agdDesc->guioptions | params.guioptions;
if ((guiOptions && !ConfMan.hasKey("guioptions")) ||
(ConfMan.hasKey("guioptions") && parseGameGUIOptions(ConfMan.get("guioptions")) != guiOptions)) {
ConfMan.set("guioptions", Common::getGameGUIOptionsDescription(guiOptions));
ConfMan.flushToDisk();
}
Common::updateGameGUIOptions(agdDesc->guioptions | params.guioptions);
debug(2, "Running %s", toGameDescriptor(*agdDesc, params.list).description().c_str());
if (!createInstance(syst, engine, agdDesc))

View file

@ -884,13 +884,7 @@ Common::Error ScummMetaEngine::createInstance(OSystem *syst, Engine **engine) co
// If the GUI options were updated, we catch this here and update them in the users config
// file transparently.
const uint32 guiOptions = res.game.guioptions;
if ((guiOptions && !ConfMan.hasKey("guioptions")) ||
(ConfMan.hasKey("guioptions") && parseGameGUIOptions(ConfMan.get("guioptions")) != guiOptions)) {
ConfMan.set("guioptions", Common::getGameGUIOptionsDescription(guiOptions));
ConfMan.flushToDisk();
}
Common::updateGameGUIOptions(res.game.guioptions);
// Finally, we have massaged the GameDescriptor to our satisfaction, and can
// instantiate the appropriate game engine. Hooray!