ResidualVM logo ResidualVM website - Forums - Contact us BuildBot - Doxygen - Wiki curved edge

MetaEngine Class Reference

A meta engine is essentially a factory for Engine instances with the added ability of listing and detecting supported games. More...

#include <metaengine.h>

Inheritance diagram for MetaEngine:
Collaboration diagram for MetaEngine:

List of all members.

Public Member Functions

virtual ~MetaEngine ()
virtual const char * getOriginalCopyright () const =0
 Returns some copyright information about the original engine.
virtual PlainGameList getSupportedGames () const =0
 Returns a list of games supported by this engine.
virtual PlainGameDescriptor findGame (const char *gameId) const =0
 Query the engine for a PlainGameDescriptor for the specified gameid, if any.
virtual DetectedGames detectGames (const Common::FSList &fslist) const =0
 Runs the engine's game detector on the given list of files, and returns a (possibly empty) list of games supported by the engine which it was able to detect amongst the given files.
virtual Common::Error createInstance (OSystem *syst, Engine **engine) const =0
 Tries to instantiate an engine instance based on the settings of the currently active ConfMan target.
virtual SaveStateList listSaves (const char *target) const
 Return a list of all save states associated with the given target.
virtual const ExtraGuiOptions getExtraGuiOptions (const Common::String &target) const
 Return a list of extra GUI options for the specified target.
virtual int getMaximumSaveSlot () const
 Return the maximum save slot that the engine supports.
virtual void removeSaveState (const char *target, int slot) const
 Remove the specified save state.
virtual SaveStateDescriptor querySaveMetaInfos (const char *target, int slot) const
 Returns meta infos from the specified save state.

MetaEngineFeature flags



enum  MetaEngineFeature {
  kSupportsListSaves, kSupportsLoadingDuringStartup, kSupportsDeleteSave, kSavesSupportMetaInfo,
  kSavesSupportThumbnail, kSavesSupportCreationDate, kSavesSupportPlayTime, kSimpleSavesNames
}
 

A feature in this context means an ability of the engine which can be either available or not.

More...
virtual bool hasFeature (MetaEngineFeature f) const
 Determine whether the engine supports the specified MetaEngine feature.

Detailed Description

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 subclass for that "engine plugin". E.g. SCUMM povides ScummMetaEngine. This is then in turn used by the frontend code to detect games, and instantiate actual Engine objects.

Definition at line 64 of file metaengine.h.


Member Enumeration Documentation

A feature in this context means an ability of the engine which can be either available or not.

Enumerator:
kSupportsListSaves 

Listing all Save States for a given target is supported, i.e., the listSaves() and getMaximumSaveSlot methods are implemented.

Used for --list-saves support, as well as the GMM load dialog.

kSupportsLoadingDuringStartup 

Loading from the Launcher / command line (-x).

kSupportsDeleteSave 

Deleting Saves from the Launcher (i.e.

implements the removeSaveState() method)

kSavesSupportMetaInfo 

Features meta infos for savestates (i.e.

implements the querySaveMetaInfos method properly).

Engines implementing meta infos always have to provide the following entries in the save state descriptor queried by querySaveMetaInfos:

  • 'is_deletable', which indicates if a given save is safe for deletion
  • 'is_write_protected', which indicates if a given save can be overwritten by the user. (note: of course you do not have to set this, since it defaults to 'false')
kSavesSupportThumbnail 

Features a thumbnail in savegames (i.e.

includes a thumbnail in savestates returned via querySaveMetaInfo). This flag may only be set when 'kSavesSupportMetaInfo' is set.

kSavesSupportCreationDate 

Features 'save_date' and 'save_time' entries in the savestate returned by querySaveMetaInfo.

Those values indicate the date/time the savegame was created. This flag may only be set when 'kSavesSupportMetaInfo' is set.

kSavesSupportPlayTime 

Features 'play_time' entry in the savestate returned by querySaveMetaInfo.

It indicates how long the user played the game till the save. This flag may only be set when 'kSavesSupportMetaInfo' is set.

kSimpleSavesNames 

Feature is available if engine's saves could be detected with "<target>.###" pattern and "###" corresponds to slot number.

If that's not true or engine is using some unusual way of detecting saves and slot numbers, this should be unavailable. In that case Save/Load dialog for engine's games is locked during cloud saves sync.

Definition at line 183 of file metaengine.h.


Constructor & Destructor Documentation

virtual MetaEngine::~MetaEngine (  )  [inline, virtual]

Definition at line 66 of file metaengine.h.


Member Function Documentation

virtual Common::Error MetaEngine::createInstance ( OSystem syst,
Engine **  engine 
) const [pure virtual]

Tries to instantiate an engine instance based on the settings of the currently active ConfMan target.

That is, the MetaEngine should query the ConfMan singleton for the target, gameid, path etc. data.

Parameters:
syst Pointer to the global OSystem object
engine Pointer to a pointer which the MetaEngine sets to the newly create Engine, or 0 in case of an error
Returns:
a Common::Error describing the error which occurred, or kNoError

Implemented in AdvancedMetaEngine, and Grim::GrimMetaEngine.

virtual DetectedGames MetaEngine::detectGames ( const Common::FSList fslist  )  const [pure virtual]

Runs the engine's game detector on the given list of files, and returns a (possibly empty) list of games supported by the engine which it was able to detect amongst the given files.

Implemented in AdvancedMetaEngine.

virtual PlainGameDescriptor MetaEngine::findGame ( const char *  gameId  )  const [pure virtual]

Query the engine for a PlainGameDescriptor for the specified gameid, if any.

Implemented in AdvancedMetaEngine, and Grim::GrimMetaEngine.

virtual const ExtraGuiOptions MetaEngine::getExtraGuiOptions ( const Common::String target  )  const [inline, virtual]

Return a list of extra GUI options for the specified target.

If no target is specified, all of the available custom GUI options are Returned for the plugin (used to set default values).

Currently, this only supports options with checkboxes.

The default implementation returns an empty list.

Parameters:
target name of a config manager target
Returns:
a list of extra GUI options for an engine plugin and target

Reimplemented in AdvancedMetaEngine.

Definition at line 131 of file metaengine.h.

virtual int MetaEngine::getMaximumSaveSlot (  )  const [inline, virtual]

Return the maximum save slot that the engine supports.

Note:
MetaEngines must indicate that this function has been implemented via the kSupportsListSaves feature flag.

The default implementation limits the save slots to zero (0).

Returns:
maximum save slot number supported

Reimplemented in Myst3::Myst3MetaEngine, and Stark::StarkMetaEngine.

Definition at line 145 of file metaengine.h.

virtual const char* MetaEngine::getOriginalCopyright (  )  const [pure virtual]

Returns some copyright information about the original engine.

Implemented in Grim::GrimMetaEngine, Myst3::Myst3MetaEngine, and Stark::StarkMetaEngine.

virtual PlainGameList MetaEngine::getSupportedGames (  )  const [pure virtual]

Returns a list of games supported by this engine.

Implemented in AdvancedMetaEngine.

virtual bool MetaEngine::hasFeature ( MetaEngineFeature  f  )  const [inline, virtual]

Determine whether the engine supports the specified MetaEngine feature.

Used by e.g. the launcher to determine whether to enable the "Load" button.

Reimplemented in Grim::GrimMetaEngine, Myst3::Myst3MetaEngine, and Stark::StarkMetaEngine.

Definition at line 258 of file metaengine.h.

virtual SaveStateList MetaEngine::listSaves ( const char *  target  )  const [inline, virtual]

Return a list of all save states associated with the given target.

The returned list is guaranteed to be sorted by slot numbers. That means smaller slot numbers are always stored before bigger slot numbers.

The caller has to ensure that this (Meta)Engine is responsible for the specified target (by using findGame on it respectively on the associated gameid from the relevant ConfMan entry, if present).

The default implementation returns an empty list.

Note:
MetaEngines must indicate that this function has been implemented via the kSupportsListSaves feature flag.
Parameters:
target name of a config manager target
Returns:
a list of save state descriptors

Reimplemented in Grim::GrimMetaEngine, Myst3::Myst3MetaEngine, and Stark::StarkMetaEngine.

Definition at line 114 of file metaengine.h.

virtual SaveStateDescriptor MetaEngine::querySaveMetaInfos ( const char *  target,
int  slot 
) const [inline, virtual]

Returns meta infos from the specified save state.

Depending on the MetaEngineFeatures set this can include thumbnails, save date / time, play time.

Parameters:
target name of a config manager target
slot slot number of the save state

Reimplemented in Myst3::Myst3MetaEngine, and Stark::StarkMetaEngine.

Definition at line 172 of file metaengine.h.

virtual void MetaEngine::removeSaveState ( const char *  target,
int  slot 
) const [inline, virtual]

Remove the specified save state.

For most engines this just amounts to calling _saveFileMan->removeSaveFile(). Engines which keep an index file will also update it accordingly.

Note:
MetaEngines must indicate that this function has been implemented via the kSupportsDeleteSave feature flag.
Parameters:
target name of a config manager target
slot slot number of the save state to be removed

Reimplemented in Myst3::Myst3MetaEngine, and Stark::StarkMetaEngine.

Definition at line 161 of file metaengine.h.


The documentation for this class was generated from the following file:


Generated on Sat Jan 19 2019 05:04:09 for ResidualVM by doxygen 1.7.1
curved edge   curved edge