aboutsummaryrefslogtreecommitdiff
path: root/engines/advancedDetector.h
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.h
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.h')
-rw-r--r--engines/advancedDetector.h27
1 files changed, 26 insertions, 1 deletions
diff --git a/engines/advancedDetector.h b/engines/advancedDetector.h
index 0cec039b5e..45a9f183e8 100644
--- a/engines/advancedDetector.h
+++ b/engines/advancedDetector.h
@@ -134,6 +134,24 @@ enum ADFlags {
/**
+ * Map entry for mapping GUIO_GAMEOPTIONS* to their ExtraGuiOption
+ * description.
+ */
+struct ADExtraGuiOptionsMap {
+ /**
+ * GUIO_GAMEOPTION* string.
+ */
+ const char *guioFlag;
+
+ /**
+ * The associated option.
+ */
+ ExtraGuiOption option;
+};
+
+#define AD_EXTRA_GUI_OPTIONS_TERMINATOR { 0, { 0, 0, 0, 0 } }
+
+/**
* A MetaEngine implementation based around the advanced detector code.
*/
class AdvancedMetaEngine : public MetaEngine {
@@ -159,6 +177,11 @@ protected:
const PlainGameDescriptor *_gameids;
/**
+ * A map containing all the extra game GUI options the engine supports.
+ */
+ const ADExtraGuiOptionsMap * const _extraGuiOptions;
+
+ /**
* The number of bytes to compute MD5 sum for. The AdvancedDetector
* is primarily based on computing and matching MD5 checksums of files.
* Since doing that for large files can be slow, it can be restricted
@@ -211,7 +234,7 @@ protected:
const char * const *_directoryGlobs;
public:
- AdvancedMetaEngine(const void *descs, uint descItemSize, const PlainGameDescriptor *gameids);
+ AdvancedMetaEngine(const void *descs, uint descItemSize, const PlainGameDescriptor *gameids, const ADExtraGuiOptionsMap *extraGuiOptions = 0);
/**
* Returns list of targets supported by the engine.
@@ -225,6 +248,8 @@ public:
virtual Common::Error createInstance(OSystem *syst, Engine **engine) const;
+ virtual const ExtraGuiOptions getExtraGuiOptions(const Common::String &target) const;
+
protected:
// To be implemented by subclasses
virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const = 0;