diff options
| -rw-r--r-- | engines/metaengine.h | 38 | ||||
| -rw-r--r-- | engines/scumm/detection.cpp | 7 | ||||
| -rw-r--r-- | gui/launcher.cpp | 5 | 
3 files changed, 48 insertions, 2 deletions
diff --git a/engines/metaengine.h b/engines/metaengine.h index aef860e0f9..0d8a4a15c9 100644 --- a/engines/metaengine.h +++ b/engines/metaengine.h @@ -91,6 +91,44 @@ public:  	virtual SaveStateList listSaves(const char *target) const {  		return SaveStateList();  	} + +	/** +	 * Remove the specified save state.  +	 * +	 * For most engines this just involves a call removeSaveFile().   +	 * Engines which keep an index file will also update it accordingly. +	 * +	 * @param slot		slot number of the save state to be removed +	 * @param saveNames	a list of all the save state description names +	 */ +	virtual void removeSaveState(int slot, Common::StringList saveNames) const {}; + +	 +	/** @name MetaEngineFeature flags */ +	//@{ +	 +	/** +	 * A feature in this context means an ability of the engine which can be +	 * either on or off.  Examples include: +	 *  - Listing Save States (--list-saves) +	 *  - Loading from the Launcher (-x) +	 *  - Deleting Saves from the Launcher +	 * +	 *  These determine whether the features will be available to the engine +	 *  in the launcher. +	 */ +	enum MetaEngineFeature { +		kSupportsListSaves, +		kSupportsDirectLoad, +		kSupportsDeleteSave +	};	 + +	/** +	 * Determine whether the engine supports the specified feature +	 */	 +	virtual bool hasFeature(MetaEngineFeature f) { return false; }; + +	//@}  }; diff --git a/engines/scumm/detection.cpp b/engines/scumm/detection.cpp index 68d3010199..716a456c90 100644 --- a/engines/scumm/detection.cpp +++ b/engines/scumm/detection.cpp @@ -677,6 +677,7 @@ public:  	virtual GameList getSupportedGames() const;  	virtual GameDescriptor findGame(const char *gameid) const;  	virtual GameList detectGames(const FSList &fslist) const; +	virtual bool hasFeature(MetaEngineFeature f);  	virtual PluginError createInstance(OSystem *syst, Engine **engine) const; @@ -691,6 +692,12 @@ GameDescriptor ScummMetaEngine::findGame(const char *gameid) const {  	return Common::AdvancedDetector::findGameID(gameid, gameDescriptions, obsoleteGameIDsTable);  } +bool ScummMetaEngine::hasFeature(MetaEngineFeature f) { +	return +		(f == kSupportsListSaves) || +		(f == kSupportsDirectLoad) || +		(f == kSupportsDeleteSave); +}  GameList ScummMetaEngine::detectGames(const FSList &fslist) const {  	GameList detectedGames; diff --git a/gui/launcher.cpp b/gui/launcher.cpp index bcf4709e78..dc3c2ee1d5 100644 --- a/gui/launcher.cpp +++ b/gui/launcher.cpp @@ -951,7 +951,8 @@ void LauncherDialog::loadGame(int item) {  	int idx;  	if (plugin) {  		do { -			_loadDialog->setList(generateSavegameList(item, plugin)); +			Common::StringList saveNames = generateSavegameList(item, plugin); +			_loadDialog->setList(saveNames);  			SaveStateList saveList = (*plugin)->listSaves(description.c_str());  			idx = _loadDialog->runModal();  			if (idx >= 0) { @@ -959,7 +960,7 @@ void LauncherDialog::loadGame(int item) {  				if (_loadDialog->delSave()) {  					String filename = saveList[idx].filename();  					printf("Deleting file: %s\n", filename.c_str()); -					saveFileMan->removeSavefile(filename.c_str()); +					//saveFileMan->removeSavefile(filename.c_str());  				}  				// Load the savegame  				else {  | 
