diff options
author | uruk | 2014-08-03 14:46:11 +0200 |
---|---|---|
committer | uruk | 2014-08-03 14:46:11 +0200 |
commit | 60a77ae6d76195180707dfe67a3d34eb95b8ca74 (patch) | |
tree | 82f10e0bc1ba1121009e3eef91f82e7f7cb6ba39 /engines/cge2/saveload.cpp | |
parent | 61083e5caba5d28689aaec8fd1f912df37eb0cf0 (diff) | |
download | scummvm-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.cpp | 18 |
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; } /** |