[Scummvm-git-logs] scummvm master -> 17706734a004ecfdf1b2f1314dcab739561d65be

Die4Ever noreply at scummvm.org
Tue Feb 15 22:39:13 UTC 2022


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
17706734a0 GROOVIE: prevent saving over reserved save slots


Commit: 17706734a004ecfdf1b2f1314dcab739561d65be
    https://github.com/scummvm/scummvm/commit/17706734a004ecfdf1b2f1314dcab739561d65be
Author: Die4Ever (die4ever2005 at gmail.com)
Date: 2022-02-15T16:38:58-06:00

Commit Message:
GROOVIE: prevent saving over reserved save slots

Changed paths:
    engines/groovie/saveload.cpp
    engines/metaengine.cpp


diff --git a/engines/groovie/saveload.cpp b/engines/groovie/saveload.cpp
index 1debd198b27..cbca21a1b51 100644
--- a/engines/groovie/saveload.cpp
+++ b/engines/groovie/saveload.cpp
@@ -89,10 +89,6 @@ Common::InSaveFile *SaveLoad::openForLoading(const Common::String &target, int s
 	Common::String savename = getSlotSaveName(target, slot);
 	Common::InSaveFile *savefile = g_system->getSavefileManager()->openForLoading(savename);
 	if (!savefile) {
-		if (slot == 0 && descriptor) {
-			descriptor->setSaveSlot(slot);
-			descriptor->setDescription("Reserved");
-		}
 		return nullptr;
 	}
 
@@ -145,9 +141,6 @@ Common::InSaveFile *SaveLoad::openForLoading(const Common::String &target, int s
 				description += c;
 			}
 		}
-		if (slot == 0 && description.compareToIgnoreCase("open house") != 0) {
-			description = "Reserved";
-		}
 		descriptor->setDescription(description);
 	}
 
diff --git a/engines/metaengine.cpp b/engines/metaengine.cpp
index 40c74f49351..204e9fcc305 100644
--- a/engines/metaengine.cpp
+++ b/engines/metaengine.cpp
@@ -355,20 +355,37 @@ SaveStateList MetaEngine::listSaves(const char *target) const {
 SaveStateList MetaEngine::listSaves(const char *target, bool saveMode) const {
 	SaveStateList saveList = listSaves(target);
 	int autosaveSlot = ConfMan.getInt("autosave_period") ? getAutosaveSlot() : -1;
-	if (!saveMode || autosaveSlot == -1)
-		return saveList;
+	bool addAutosave = saveMode;
+	bool addReserved = saveMode;
+	if (autosaveSlot == -1)
+		addAutosave = false;
 
 	// Check to see if an autosave is present
 	for (SaveStateList::iterator it = saveList.begin(); it != saveList.end(); ++it) {
 		// It has an autosave
 		if (it->isAutosave())
-			return saveList;
+			addAutosave = false;
+		if (it->getSaveSlot() == 0) {
+			addReserved = false;
+			if (it->getDescription() != "OPEN HOUSE" && it->getDescription() != "Open House") {
+				it->setDescription(_("Reserved"));
+			}
+			it->setLocked(saveMode);
+		}
 	}
 
 	// No autosave yet. We want to add a dummy one in so that it can be marked as
 	// write protected, and thus be prevented from being saved in
-	SaveStateDescriptor desc(this, autosaveSlot, _("Autosave"));
-	saveList.push_back(desc);
+	if (addAutosave) {
+		SaveStateDescriptor desc(this, autosaveSlot, _("Autosave"));
+		desc.setLocked(saveMode);
+		saveList.push_back(desc);
+	}
+	if (addReserved) {
+		SaveStateDescriptor desc(this, 0, _("Reserved"));
+		desc.setLocked(saveMode);
+		saveList.push_back(desc);
+	}
 	Common::sort(saveList.begin(), saveList.end(), SaveStateDescriptorSlotComparator());
 
 	return saveList;




More information about the Scummvm-git-logs mailing list