aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/agi/detection.cpp11
-rw-r--r--engines/kyra/detection.cpp11
-rw-r--r--engines/lure/detection.cpp11
-rw-r--r--engines/metaengine.h6
-rw-r--r--engines/parallaction/detection.cpp11
-rw-r--r--engines/queen/queen.cpp11
-rw-r--r--engines/saga/detection.cpp11
-rw-r--r--engines/scumm/detection.cpp11
-rw-r--r--engines/sword2/sword2.cpp11
-rw-r--r--engines/touche/detection.cpp11
-rw-r--r--gui/launcher.cpp19
11 files changed, 108 insertions, 16 deletions
diff --git a/engines/agi/detection.cpp b/engines/agi/detection.cpp
index 9caf09fd28..2b2d7e080b 100644
--- a/engines/agi/detection.cpp
+++ b/engines/agi/detection.cpp
@@ -2125,6 +2125,7 @@ public:
virtual bool hasFeature(MetaEngineFeature f) const;
virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const;
virtual SaveStateList listSaves(const char *target) const;
+ virtual void removeSaveState(const char *target, int slot) const;
const Common::ADGameDescription *fallbackDetect(const Common::FSList *fslist) const;
};
@@ -2189,6 +2190,16 @@ SaveStateList AgiMetaEngine::listSaves(const char *target) const {
return saveList;
}
+void AgiMetaEngine::removeSaveState(const char *target, int slot) const {
+ char extension[6];
+ snprintf(extension, sizeof(extension), ".%03d", slot);
+
+ Common::String filename = target;
+ filename += extension;
+
+ g_system->getSavefileManager()->removeSavefile(filename.c_str());
+}
+
const Common::ADGameDescription *AgiMetaEngine::fallbackDetect(const Common::FSList *fslist) const {
typedef Common::HashMap<Common::String, int32> IntMap;
IntMap allFiles;
diff --git a/engines/kyra/detection.cpp b/engines/kyra/detection.cpp
index c19db16d36..ccddbeb64c 100644
--- a/engines/kyra/detection.cpp
+++ b/engines/kyra/detection.cpp
@@ -1067,6 +1067,7 @@ public:
bool hasFeature(MetaEngineFeature f) const;
bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const;
SaveStateList listSaves(const char *target) const;
+ void removeSaveState(const char *target, int slot) const;
};
bool KyraMetaEngine::hasFeature(MetaEngineFeature f) const {
@@ -1147,6 +1148,16 @@ SaveStateList KyraMetaEngine::listSaves(const char *target) const {
return saveList;
}
+void KyraMetaEngine::removeSaveState(const char *target, int slot) const {
+ char extension[6];
+ snprintf(extension, sizeof(extension), ".%03d", slot);
+
+ Common::String filename = target;
+ filename += extension;
+
+ g_system->getSavefileManager()->removeSavefile(filename.c_str());
+}
+
#if PLUGIN_ENABLED_DYNAMIC(KYRA)
REGISTER_PLUGIN_DYNAMIC(KYRA, PLUGIN_TYPE_ENGINE, KyraMetaEngine);
#else
diff --git a/engines/lure/detection.cpp b/engines/lure/detection.cpp
index ccfa26fadc..163d095243 100644
--- a/engines/lure/detection.cpp
+++ b/engines/lure/detection.cpp
@@ -188,6 +188,7 @@ public:
virtual bool hasFeature(MetaEngineFeature f) const;
virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const;
virtual SaveStateList listSaves(const char *target) const;
+ virtual void removeSaveState(const char *target, int slot) const;
};
bool LureMetaEngine::hasFeature(MetaEngineFeature f) const {
@@ -234,6 +235,16 @@ SaveStateList LureMetaEngine::listSaves(const char *target) const {
return saveList;
}
+void LureMetaEngine::removeSaveState(const char *target, int slot) const {
+ char extension[6];
+ snprintf(extension, sizeof(extension), ".%03d", slot);
+
+ Common::String filename = target;
+ filename += extension;
+
+ g_system->getSavefileManager()->removeSavefile(filename.c_str());
+}
+
#if PLUGIN_ENABLED_DYNAMIC(LURE)
REGISTER_PLUGIN_DYNAMIC(LURE, PLUGIN_TYPE_ENGINE, LureMetaEngine);
#else
diff --git a/engines/metaengine.h b/engines/metaengine.h
index bf640815a6..b6fa21fd5f 100644
--- a/engines/metaengine.h
+++ b/engines/metaengine.h
@@ -101,12 +101,10 @@ public:
* For most engines this just amounts to calling _saveFileMan->removeSaveFile().
* Engines which keep an index file will also update it accordingly.
*
+ * @param target name of a config manager target
* @param slot slot number of the save state to be removed
- *
- * @todo This method is currently never called. Rather, LauncherDialog::loadGame
- * directly calls _saveFileMan->removeSaveFile() if kSupportsDeleteSave is set.
*/
- virtual void removeSaveState(int slot) const {};
+ virtual void removeSaveState(const char *target, int slot) const {};
/** @name MetaEngineFeature flags */
diff --git a/engines/parallaction/detection.cpp b/engines/parallaction/detection.cpp
index aae17d32e1..d2444c642e 100644
--- a/engines/parallaction/detection.cpp
+++ b/engines/parallaction/detection.cpp
@@ -246,6 +246,7 @@ public:
virtual bool hasFeature(MetaEngineFeature f) const;
virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const;
virtual SaveStateList listSaves(const char *target) const;
+ virtual void removeSaveState(const char *target, int slot) const;
};
bool ParallactionMetaEngine::hasFeature(MetaEngineFeature f) const {
@@ -302,6 +303,16 @@ SaveStateList ParallactionMetaEngine::listSaves(const char *target) const {
return saveList;
}
+void ParallactionMetaEngine::removeSaveState(const char *target, int slot) const {
+ char extension[6];
+ snprintf(extension, sizeof(extension), ".0%02d", slot);
+
+ Common::String filename = target;
+ filename += extension;
+
+ g_system->getSavefileManager()->removeSavefile(filename.c_str());
+}
+
#if PLUGIN_ENABLED_DYNAMIC(PARALLACTION)
REGISTER_PLUGIN_DYNAMIC(PARALLACTION, PLUGIN_TYPE_ENGINE, ParallactionMetaEngine);
#else
diff --git a/engines/queen/queen.cpp b/engines/queen/queen.cpp
index a73eedaf4f..6cdd020b8f 100644
--- a/engines/queen/queen.cpp
+++ b/engines/queen/queen.cpp
@@ -65,6 +65,7 @@ public:
virtual GameDescriptor findGame(const char *gameid) const;
virtual GameList detectGames(const Common::FSList &fslist) const;
virtual SaveStateList listSaves(const char *target) const;
+ virtual void removeSaveState(const char *target, int slot) const;
virtual PluginError createInstance(OSystem *syst, Engine **engine) const;
};
@@ -161,6 +162,16 @@ SaveStateList QueenMetaEngine::listSaves(const char *target) const {
return saveList;
}
+void QueenMetaEngine::removeSaveState(const char *target, int slot) const {
+ char extension[6];
+ snprintf(extension, sizeof(extension), ".s%02d", slot);
+
+ Common::String filename = target;
+ filename += extension;
+
+ g_system->getSavefileManager()->removeSavefile(filename.c_str());
+}
+
PluginError QueenMetaEngine::createInstance(OSystem *syst, Engine **engine) const {
assert(engine);
*engine = new Queen::QueenEngine(syst);
diff --git a/engines/saga/detection.cpp b/engines/saga/detection.cpp
index cc9ba34cdc..a31e9b755a 100644
--- a/engines/saga/detection.cpp
+++ b/engines/saga/detection.cpp
@@ -150,6 +150,7 @@ public:
virtual bool hasFeature(MetaEngineFeature f) const;
virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const;
virtual SaveStateList listSaves(const char *target) const;
+ virtual void removeSaveState(const char *target, int slot) const;
};
bool SagaMetaEngine::hasFeature(MetaEngineFeature f) const {
@@ -198,6 +199,16 @@ SaveStateList SagaMetaEngine::listSaves(const char *target) const {
return saveList;
}
+void SagaMetaEngine::removeSaveState(const char *target, int slot) const {
+ char extension[6];
+ snprintf(extension, sizeof(extension), ".s%02d", slot);
+
+ Common::String filename = target;
+ filename += extension;
+
+ g_system->getSavefileManager()->removeSavefile(filename.c_str());
+}
+
#if PLUGIN_ENABLED_DYNAMIC(SAGA)
REGISTER_PLUGIN_DYNAMIC(SAGA, PLUGIN_TYPE_ENGINE, SagaMetaEngine);
#else
diff --git a/engines/scumm/detection.cpp b/engines/scumm/detection.cpp
index 2a6e0c0b10..1062e77114 100644
--- a/engines/scumm/detection.cpp
+++ b/engines/scumm/detection.cpp
@@ -682,6 +682,7 @@ public:
virtual PluginError createInstance(OSystem *syst, Engine **engine) const;
virtual SaveStateList listSaves(const char *target) const;
+ virtual void removeSaveState(const char *target, int slot) const;
};
bool ScummMetaEngine::hasFeature(MetaEngineFeature f) const {
@@ -975,6 +976,16 @@ SaveStateList ScummMetaEngine::listSaves(const char *target) const {
return saveList;
}
+void ScummMetaEngine::removeSaveState(const char *target, int slot) const {
+ char extension[6];
+ snprintf(extension, sizeof(extension), ".s%02d", slot);
+
+ Common::String filename = target;
+ filename += extension;
+
+ g_system->getSavefileManager()->removeSavefile(filename.c_str());
+}
+
#if PLUGIN_ENABLED_DYNAMIC(SCUMM)
REGISTER_PLUGIN_DYNAMIC(SCUMM, PLUGIN_TYPE_ENGINE, ScummMetaEngine);
#else
diff --git a/engines/sword2/sword2.cpp b/engines/sword2/sword2.cpp
index 390db0d275..dc884eaacb 100644
--- a/engines/sword2/sword2.cpp
+++ b/engines/sword2/sword2.cpp
@@ -85,6 +85,7 @@ public:
virtual GameDescriptor findGame(const char *gameid) const;
virtual GameList detectGames(const Common::FSList &fslist) const;
virtual SaveStateList listSaves(const char *target) const;
+ virtual void removeSaveState(const char *target, int slot) const;
virtual PluginError createInstance(OSystem *syst, Engine **engine) const;
};
@@ -196,6 +197,16 @@ SaveStateList Sword2MetaEngine::listSaves(const char *target) const {
return saveList;
}
+void Sword2MetaEngine::removeSaveState(const char *target, int slot) const {
+ char extension[6];
+ snprintf(extension, sizeof(extension), ".%03d", slot);
+
+ Common::String filename = target;
+ filename += extension;
+
+ g_system->getSavefileManager()->removeSavefile(filename.c_str());
+}
+
PluginError Sword2MetaEngine::createInstance(OSystem *syst, Engine **engine) const {
assert(syst);
assert(engine);
diff --git a/engines/touche/detection.cpp b/engines/touche/detection.cpp
index 89655ac9ab..bbc605ba46 100644
--- a/engines/touche/detection.cpp
+++ b/engines/touche/detection.cpp
@@ -139,6 +139,7 @@ public:
virtual bool hasFeature(MetaEngineFeature f) const;
virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const;
virtual SaveStateList listSaves(const char *target) const;
+ virtual void removeSaveState(const char *target, int slot) const;
};
bool ToucheMetaEngine::hasFeature(MetaEngineFeature f) const {
@@ -208,6 +209,16 @@ SaveStateList ToucheMetaEngine::listSaves(const char *target) const {
return saveList;
}
+void ToucheMetaEngine::removeSaveState(const char *target, int slot) const {
+ char extension[5];
+ snprintf(extension, sizeof(extension), ".%d", slot);
+
+ Common::String filename = target;
+ filename += extension;
+
+ g_system->getSavefileManager()->removeSavefile(filename.c_str());
+}
+
#if PLUGIN_ENABLED_DYNAMIC(TOUCHE)
REGISTER_PLUGIN_DYNAMIC(TOUCHE, PLUGIN_TYPE_ENGINE, ToucheMetaEngine);
#else
diff --git a/gui/launcher.cpp b/gui/launcher.cpp
index b85b34e3d4..7656e467e7 100644
--- a/gui/launcher.cpp
+++ b/gui/launcher.cpp
@@ -940,7 +940,6 @@ void LauncherDialog::editGame(int item) {
}
void LauncherDialog::loadGame(int item) {
- Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
String gameId = ConfMan.get("gameid", _domains[item]);
if (gameId.empty())
gameId = _domains[item];
@@ -956,8 +955,7 @@ void LauncherDialog::loadGame(int item) {
bool delSupport = (*plugin)->hasFeature(MetaEngine::kSupportsDeleteSave);
if ((*plugin)->hasFeature(MetaEngine::kSupportsListSaves) &&
- (*plugin)->hasFeature(MetaEngine::kSupportsDirectLoad))
- {
+ (*plugin)->hasFeature(MetaEngine::kSupportsDirectLoad)) {
do {
Common::StringList saveNames = generateSavegameList(item, plugin);
_loadDialog->setList(saveNames);
@@ -971,14 +969,12 @@ void LauncherDialog::loadGame(int item) {
MessageDialog alert("Do you really want to delete this savegame?",
"Delete", "Cancel");
if (alert.runModal() == GUI::kMessageOK) {
- saveFileMan->removeSavefile(filename.c_str());
- if ((saveList.size() - 1) == 0) {
- //ConfMan.setInt("save_slot", -1);
- }
+ (*plugin)->removeSaveState(description.c_str(), atoi(saveList[idx].save_slot().c_str()));
+ /*if ((saveList.size() - 1) == 0) {
+ ConfMan.setInt("save_slot", -1);
+ }*/
}
- }
- // Load the savegame
- else {
+ } else { // Load the savegame
int slot = atoi(saveList[idx].save_slot().c_str());
//const char *file = saveList[idx].filename().c_str();
//printf("Loading slot: %d\n", slot);
@@ -988,8 +984,7 @@ void LauncherDialog::loadGame(int item) {
close();
}
}
- }
- while (_loadDialog->delSave());
+ } while (_loadDialog->delSave());
} else {
MessageDialog dialog
("Sorry, this game does not yet support loading games from the launcher.", "OK");