aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/cine/detection.cpp46
1 files changed, 45 insertions, 1 deletions
diff --git a/engines/cine/detection.cpp b/engines/cine/detection.cpp
index 07195fa7b9..7b4e34c645 100644
--- a/engines/cine/detection.cpp
+++ b/engines/cine/detection.cpp
@@ -538,12 +538,14 @@ public:
virtual bool hasFeature(MetaEngineFeature f) const;
virtual SaveStateList listSaves(const char *target) const;
virtual int getMaximumSaveSlot() const;
+ virtual void removeSaveState(const char *target, int slot) const;
};
bool CineMetaEngine::hasFeature(MetaEngineFeature f) const {
return
(f == kSupportsListSaves) ||
- (f == kSupportsLoadingDuringStartup);
+ (f == kSupportsLoadingDuringStartup) ||
+ (f == kSupportsDeleteSave);
}
bool Cine::CineEngine::hasFeature(EngineFeature f) const {
@@ -607,6 +609,48 @@ SaveStateList CineMetaEngine::listSaves(const char *target) const {
int CineMetaEngine::getMaximumSaveSlot() const { return 9; }
+void CineMetaEngine::removeSaveState(const char *target, int slot) const {
+ // Load savegame descriptions from index file
+ typedef char CommandeType[20];
+ CommandeType saveNames[10];
+
+ Common::InSaveFile *in;
+ char tmp[80];
+
+ snprintf(tmp, 80, "%s.dir", target);
+ in = g_system->getSavefileManager()->openForLoading(tmp);
+
+ if (!in)
+ return;
+
+ in->read(saveNames, 10 * 20);
+ delete in;
+
+ // Set description for selected slot
+ char slotName[20];
+ slotName[0] = 0;
+ strncpy(saveNames[slot], slotName, 20);
+
+ // Update savegame descriptions
+ char indexFile[80];
+ snprintf(indexFile, 80, "%s.dir", target);
+
+ Common::OutSaveFile *out = g_system->getSavefileManager()->openForSaving(indexFile);
+ if (!out) {
+ warning("Unable to open file %s for saving", indexFile);
+ return;
+ }
+
+ out->write(saveNames, 10 * 20);
+ delete out;
+
+ // Delete save file
+ char saveFileName[256];
+ sprintf(saveFileName, "%s.%1d", target, slot);
+
+ g_system->getSavefileManager()->removeSavefile(saveFileName);
+}
+
#if PLUGIN_ENABLED_DYNAMIC(CINE)
REGISTER_PLUGIN_DYNAMIC(CINE, PLUGIN_TYPE_ENGINE, CineMetaEngine);
#else