aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2018-10-17 22:44:45 -0700
committerPaul Gilbert2018-12-08 19:05:59 -0800
commitef161922d85a23ea99d9e86417c6ac8b675dc43d (patch)
tree8957b0f7a0bdd757290efb6ff4f866a3df3fced7
parentdb35a9cdc8832ce7768202126842d64a84afc444 (diff)
downloadscummvm-rg350-ef161922d85a23ea99d9e86417c6ac8b675dc43d.tar.gz
scummvm-rg350-ef161922d85a23ea99d9e86417c6ac8b675dc43d.tar.bz2
scummvm-rg350-ef161922d85a23ea99d9e86417c6ac8b675dc43d.zip
ENGINES: Add optional extra configuration entries when creating new targets
-rw-r--r--base/plugins.cpp5
-rw-r--r--engines/game.h15
2 files changed, 20 insertions, 0 deletions
diff --git a/base/plugins.cpp b/base/plugins.cpp
index f6bbeacf74..f4d18efb1c 100644
--- a/base/plugins.cpp
+++ b/base/plugins.cpp
@@ -580,6 +580,11 @@ Common::String EngineManager::createTargetForGame(const DetectedGame &game) {
addStringToConf("extra", game.extra, domain);
addStringToConf("guioptions", game.getGUIOptions(), domain);
+ // Add any extra configuration keys
+ for (Common::StringMap::iterator i = game._extraConfigEntries.begin();
+ i != game._extraConfigEntries.end(); ++i)
+ addStringToConf((*i)._key, (*i)._value, domain);
+
// TODO: Setting the description field here has the drawback
// that the user does never notice when we upgrade our descriptions.
// It might be nice to leave this field empty, and only set it to
diff --git a/engines/game.h b/engines/game.h
index 14f9962ce6..304166d05f 100644
--- a/engines/game.h
+++ b/engines/game.h
@@ -148,6 +148,21 @@ struct DetectedGame {
*/
GameSupportLevel gameSupportLevel;
+ /**
+ * A list of extra keys to write to the configuration file
+ */
+ Common::StringMap _extraConfigEntries;
+
+ /**
+ * Allows adding of extra entries to be saved as part of the detection entry
+ * in the configuration file.
+ * @remarks Any entry added using this should not be relied on being present
+ * in the configuration file, since starting games directly from the
+ * command line bypasses the game detection code
+ */
+ void addExtraEntry(const Common::String &key, const Common::String &value) {
+ _extraConfigEntries[key] = value;
+ }
private:
/**
* Update the description string by appending (EXTRA/PLATFORM/LANG) to it.