aboutsummaryrefslogtreecommitdiff
path: root/engines/metaengine.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/metaengine.h')
-rw-r--r--engines/metaengine.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/engines/metaengine.h b/engines/metaengine.h
index d9c1360042..632c204978 100644
--- a/engines/metaengine.h
+++ b/engines/metaengine.h
@@ -24,6 +24,7 @@
#include "common/scummsys.h"
#include "common/error.h"
+#include "common/array.h"
#include "engines/game.h"
#include "engines/savestate.h"
@@ -39,6 +40,19 @@ class String;
}
/**
+ * Per-game extra GUI options structure.
+ * Currently, this can only be used for options with checkboxes.
+ */
+struct ExtraGuiOption {
+ const char *label; // option label, e.g. "Fullscreen mode"
+ const char *tooltip; // option tooltip (when the mouse hovers above it)
+ const char *configOption; // confMan key, e.g. "fullscreen"
+ bool defaultState; // the detault state of the checkbox (checked or not)
+};
+
+typedef Common::Array<ExtraGuiOption> ExtraGuiOptions;
+
+/**
* A meta engine is essentially a factory for Engine instances with the
* added ability of listing and detecting supported games.
* Every engine "plugin" provides a hook to get an instance of a MetaEngine
@@ -98,6 +112,16 @@ public:
}
/**
+ * Return a list of extra GUI options.
+ * Currently, this only supports options with checkboxes.
+ *
+ * The default implementation returns an empty list.
+ */
+ virtual const ExtraGuiOptions getExtraGuiOptions(const Common::String &target) const {
+ return ExtraGuiOptions();
+ }
+
+ /**
* Return the maximum save slot that the engine supports.
*
* @note MetaEngines must indicate that this function has been implemented