From 0500096703dba668e56b5ebb37c7ba5a58c32f0d Mon Sep 17 00:00:00 2001 From: David Fioramonti Date: Mon, 21 May 2018 18:07:46 -0700 Subject: MOHAWK: MYST: Do not autosave over saves from the original The previous logic was enabling autosaving if the metadata file was not present, but saves from the original don't have metadata. Now it checks if the non-metadata file can be loaded to determine if the slot is empty. --- engines/mohawk/myst_state.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'engines/mohawk') diff --git a/engines/mohawk/myst_state.cpp b/engines/mohawk/myst_state.cpp index efc5025de5..a1077a71f1 100644 --- a/engines/mohawk/myst_state.cpp +++ b/engines/mohawk/myst_state.cpp @@ -259,12 +259,19 @@ bool MystGameState::saveMetadata(int slot) { bool MystGameState::isAutoSaveAllowed() { // Open autosave slot and see if it an autosave // Autosaving will be enabled if it is an autosave or if there is no save in that slot - Common::String filename = buildMetadataFilename(kAutoSaveSlot); - Common::ScopedPtr metadataFile(g_system->getSavefileManager()->openForLoading(filename)); - if (!metadataFile) { // There is no save in the autosave slot, enable autosave + + Common::String dataFilename = buildSaveFilename(kAutoSaveSlot); + Common::ScopedPtr dataFile(g_system->getSavefileManager()->openForLoading(dataFilename)); + if (!dataFile) { // Cannot load non-meta file, enable autosave return true; } + Common::String metaFilename = buildMetadataFilename(kAutoSaveSlot); + Common::ScopedPtr metadataFile(g_system->getSavefileManager()->openForLoading(metaFilename)); + if (!metadataFile) { // Can load non-meta file, but not metafile, could be a save from the original, disable autosave + return false; + } + Common::Serializer m(metadataFile.get(), nullptr); // Read the metadata file -- cgit v1.2.3