aboutsummaryrefslogtreecommitdiff
path: root/engines/cge2/saveload.cpp
diff options
context:
space:
mode:
authoruruk2014-08-03 14:46:11 +0200
committeruruk2014-08-03 14:46:11 +0200
commit60a77ae6d76195180707dfe67a3d34eb95b8ca74 (patch)
tree82f10e0bc1ba1121009e3eef91f82e7f7cb6ba39 /engines/cge2/saveload.cpp
parent61083e5caba5d28689aaec8fd1f912df37eb0cf0 (diff)
downloadscummvm-rg350-60a77ae6d76195180707dfe67a3d34eb95b8ca74.tar.gz
scummvm-rg350-60a77ae6d76195180707dfe67a3d34eb95b8ca74.tar.bz2
scummvm-rg350-60a77ae6d76195180707dfe67a3d34eb95b8ca74.zip
CGE2: Add autosave functionality.
Diffstat (limited to 'engines/cge2/saveload.cpp')
-rw-r--r--engines/cge2/saveload.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/engines/cge2/saveload.cpp b/engines/cge2/saveload.cpp
index 4a9da882d5..b95210eea0 100644
--- a/engines/cge2/saveload.cpp
+++ b/engines/cge2/saveload.cpp
@@ -129,6 +129,11 @@ SaveStateDescriptor CGE2MetaEngine::querySaveMetaInfos(const char *target, int s
desc.setSaveDate(header.saveYear, header.saveMonth, header.saveDay);
desc.setSaveTime(header.saveHour, header.saveMinutes);
+ // Slot 0 is used for the 'automatic save on exit' save in Soltys, thus
+ // we prevent it from being deleted or overwritten by accident.
+ desc.setDeletableFlag(slot != 0);
+ desc.setWriteProtectedFlag(slot == 0);
+
return desc;
}
}
@@ -186,8 +191,15 @@ bool CGE2Engine::canLoadGameStateCurrently() {
}
Common::Error CGE2Engine::saveGameState(int slot, const Common::String &desc) {
+ storeHeroPos();
+ saveGame(slot, desc);
+ sceneUp(_now);
+ return Common::kNoError;
+}
+
+void CGE2Engine::saveGame(int slotNumber, const Common::String &desc) {
// Set up the serializer
- Common::String slotName = generateSaveName(slot);
+ Common::String slotName = generateSaveName(slotNumber);
Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving(slotName);
// Write out the ScummVM savegame header
@@ -197,16 +209,12 @@ Common::Error CGE2Engine::saveGameState(int slot, const Common::String &desc) {
writeSavegameHeader(saveFile, header);
// Write out the data of the savegame
- storeHeroPos();
sceneDown();
syncGame(nullptr, saveFile);
- sceneUp(_now);
// Finish writing out game data
saveFile->finalize();
delete saveFile;
-
- return Common::kNoError;
}
/**