diff options
author | Johannes Schickel | 2012-02-29 16:48:25 +0100 |
---|---|---|
committer | Johannes Schickel | 2012-03-19 21:04:29 +0100 |
commit | 82ab3056fa52f78309ae3271114dbec28ceb9684 (patch) | |
tree | a8e8814a85521a633773605debaa3f880f247565 /engines/advancedDetector.cpp | |
parent | c84cd8dee83fe42263f82ae3bb603360b99e0b0a (diff) | |
download | scummvm-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.cpp | 24 |
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; |