diff options
Diffstat (limited to 'engines/xeen/saves.cpp')
-rw-r--r-- | engines/xeen/saves.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/engines/xeen/saves.cpp b/engines/xeen/saves.cpp index 2a6b7d6619..f69757f4d0 100644 --- a/engines/xeen/saves.cpp +++ b/engines/xeen/saves.cpp @@ -143,7 +143,7 @@ Common::Error SavesManager::saveGameState(int slot, const Common::String &desc) Map &map = *g_vm->_map; map.saveMaze(); - + // Write the savegame header XeenSavegameHeader header; header._saveName = desc; writeSavegameHeader(out, header); @@ -159,6 +159,10 @@ Common::Error SavesManager::saveGameState(int slot, const Common::String &desc) } } + // Write out miscellaneous + FileManager &files = *g_vm->_files; + files.save(*out); + out->finalize(); delete out; @@ -166,6 +170,11 @@ Common::Error SavesManager::saveGameState(int slot, const Common::String &desc) } Common::Error SavesManager::loadGameState(int slot) { + EventsManager &events = *g_vm->_events; + FileManager &files = *g_vm->_files; + Map &map = *g_vm->_map; + Party &party = *g_vm->_party; + Common::InSaveFile *saveFile = g_system->getSavefileManager()->openForLoading( generateSaveName(slot)); if (!saveFile) @@ -182,7 +191,7 @@ Common::Error SavesManager::loadGameState(int slot) { } // Set the total play time - g_vm->_events->setPlayTime(header._totalFrames); + events.setPlayTime(header._totalFrames); // Loop through loading the sides' save archives SaveArchive *archives[2] = { File::_xeenSave, File::_darkSave }; @@ -198,6 +207,13 @@ Common::Error SavesManager::loadGameState(int slot) { } } + // Read in miscellaneous + files.load(*saveFile); + + // Load the new map + map._loadDarkSide = files._isDarkCc; + map.load(party._mazeId); + return Common::kNoError; } |