aboutsummaryrefslogtreecommitdiff
path: root/engines/advancedDetector.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2012-02-29 16:48:25 +0100
committerJohannes Schickel2012-03-19 21:04:29 +0100
commit82ab3056fa52f78309ae3271114dbec28ceb9684 (patch)
treea8e8814a85521a633773605debaa3f880f247565 /engines/advancedDetector.cpp
parentc84cd8dee83fe42263f82ae3bb603360b99e0b0a (diff)
downloadscummvm-rg350-82ab3056fa52f78309ae3271114dbec28ceb9684.tar.gz
scummvm-rg350-82ab3056fa52f78309ae3271114dbec28ceb9684.tar.bz2
scummvm-rg350-82ab3056fa52f78309ae3271114dbec28ceb9684.zip
ENGINES: Implement per-game options caching in AdvancedDetector via GUIO flags.
Diffstat (limited to 'engines/advancedDetector.cpp')
-rw-r--r--engines/advancedDetector.cpp24
1 files changed, 22 insertions, 2 deletions
diff --git a/engines/advancedDetector.cpp b/engines/advancedDetector.cpp
index 081a97b9f1..dc7f7e007c 100644
--- a/engines/advancedDetector.cpp
+++ b/engines/advancedDetector.cpp
@@ -167,6 +167,25 @@ GameList AdvancedMetaEngine::detectGames(const Common::FSList &fslist) const {
return detectedGames;
}
+const ExtraGuiOptions AdvancedMetaEngine::getExtraGuiOptions(const Common::String &target) const {
+ if (!_extraGuiOptions)
+ return ExtraGuiOptions();
+
+ // Query the GUI options
+ const Common::String guiOptionsString = ConfMan.get("guioptions", target);
+ const Common::String guiOptions = parseGameGUIOptions(guiOptionsString);
+
+ ExtraGuiOptions options;
+
+ // Add all the applying extra GUI options.
+ for (const ADExtraGuiOptionsMap *entry = _extraGuiOptions; entry->guioFlag; ++entry) {
+ if (guiOptions.contains(entry->guioFlag))
+ options.push_back(entry->option);
+ }
+
+ return options;
+}
+
Common::Error AdvancedMetaEngine::createInstance(OSystem *syst, Engine **engine) const {
assert(engine);
@@ -562,8 +581,9 @@ GameDescriptor AdvancedMetaEngine::findGame(const char *gameid) const {
return GameDescriptor();
}
-AdvancedMetaEngine::AdvancedMetaEngine(const void *descs, uint descItemSize, const PlainGameDescriptor *gameids)
- : _gameDescriptors((const byte *)descs), _descItemSize(descItemSize), _gameids(gameids) {
+AdvancedMetaEngine::AdvancedMetaEngine(const void *descs, uint descItemSize, const PlainGameDescriptor *gameids, const ADExtraGuiOptionsMap *extraGuiOptions)
+ : _gameDescriptors((const byte *)descs), _descItemSize(descItemSize), _gameids(gameids),
+ _extraGuiOptions(extraGuiOptions) {
_md5Bytes = 5000;
_singleid = NULL;