diff options
Diffstat (limited to 'engines/tsage/saveload.cpp')
-rw-r--r-- | engines/tsage/saveload.cpp | 57 |
1 files changed, 28 insertions, 29 deletions
diff --git a/engines/tsage/saveload.cpp b/engines/tsage/saveload.cpp index 317bc4bbb7..56df32146a 100644 --- a/engines/tsage/saveload.cpp +++ b/engines/tsage/saveload.cpp @@ -18,9 +18,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * $URL$ - * $Id$ - * */ #include "common/savefile.h" @@ -53,7 +50,7 @@ Saver::Saver() { Saver::~Saver() { // Internal validation that no saved object is still present int totalLost = 0; - for (SynchronisedList<SavedObject *>::iterator i = _saver->_objList.begin(); i != _saver->_objList.end(); ++i) { + for (SynchronizedList<SavedObject *>::iterator i = _saver->_objList.begin(); i != _saver->_objList.end(); ++i) { SavedObject *so = *i; if (so) ++totalLost; @@ -65,16 +62,14 @@ Saver::~Saver() { /*--------------------------------------------------------------------------*/ -void Serialiser::syncPointer(SavedObject **ptr, Common::Serializer::Version minVersion, +void Serializer::syncPointer(SavedObject **ptr, Common::Serializer::Version minVersion, Common::Serializer::Version maxVersion) { - int idx; + int idx = 0; assert(ptr); if (isSaving()) { // Get the object index for the given pointer and write it out - if (!*ptr) { - idx = 0; - } else { + if (*ptr) { idx = _saver->blockIndexOf(*ptr); assert(idx > 0); } @@ -89,7 +84,7 @@ void Serialiser::syncPointer(SavedObject **ptr, Common::Serializer::Version minV } } -void Serialiser::validate(const Common::String &s, Common::Serializer::Version minVersion, +void Serializer::validate(const Common::String &s, Common::Serializer::Version minVersion, Common::Serializer::Version maxVersion) { Common::String tempStr = s; syncString(tempStr, minVersion, maxVersion); @@ -98,7 +93,7 @@ void Serialiser::validate(const Common::String &s, Common::Serializer::Version m error("Savegame is corrupt"); } -void Serialiser::validate(int v, Common::Serializer::Version minVersion, +void Serializer::validate(int v, Common::Serializer::Version minVersion, Common::Serializer::Version maxVersion) { int tempVal = v; syncAsUint32LE(tempVal, minVersion, maxVersion); @@ -118,9 +113,10 @@ Common::Error Saver::save(int slot, const Common::String &saveName) { _macroSaveFlag = true; _saveSlot = slot; - // Set up the serialiser + // Set up the serializer Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving(_vm->generateSaveName(slot)); - Serialiser serialiser(NULL, saveFile); + Serializer serializer(NULL, saveFile); + serializer.setSaveVersion(TSAGE_SAVEGAME_VERSION); // Write out the savegame header tSageSavegameHeader header; @@ -129,14 +125,14 @@ Common::Error Saver::save(int slot, const Common::String &saveName) { writeSavegameHeader(saveFile, header); // Save out objects that need to come at the start of the savegame - for (SynchronisedList<SaveListener *>::iterator i = _listeners.begin(); i != _listeners.end(); ++i) { - (*i)->listenerSynchronise(serialiser); + for (SynchronizedList<SaveListener *>::iterator i = _listeners.begin(); i != _listeners.end(); ++i) { + (*i)->listenerSynchronize(serializer); } // Save each registered SaveObject descendant object into the savegame file - for (SynchronisedList<SavedObject *>::iterator i = _objList.begin(); i != _objList.end(); ++i) { - serialiser.validate((*i)->getClassName()); - (*i)->synchronise(serialiser); + for (SynchronizedList<SavedObject *>::iterator i = _objList.begin(); i != _objList.end(); ++i) { + serializer.validate((*i)->getClassName()); + (*i)->synchronize(serializer); } // Save file complete @@ -162,24 +158,26 @@ Common::Error Saver::restore(int slot) { _saveSlot = slot; _unresolvedPtrs.clear(); - // Set up the serialiser + // Set up the serializer Common::InSaveFile *saveFile = g_system->getSavefileManager()->openForLoading(_vm->generateSaveName(slot)); - Serialiser serialiser(saveFile, NULL); + Serializer serializer(saveFile, NULL); // Read in the savegame header tSageSavegameHeader header; readSavegameHeader(saveFile, header); delete header.thumbnail; + serializer.setSaveVersion(header.version); + // Load in data for objects that need to come at the start of the savegame for (Common::List<SaveListener *>::iterator i = _listeners.begin(); i != _listeners.end(); ++i) { - (*i)->listenerSynchronise(serialiser); + (*i)->listenerSynchronize(serializer); } // Loop through each registered object to load in the data - for (SynchronisedList<SavedObject *>::iterator i = _objList.begin(); i != _objList.end(); ++i) { - serialiser.validate((*i)->getClassName()); - (*i)->synchronise(serialiser); + for (SynchronizedList<SavedObject *>::iterator i = _objList.begin(); i != _objList.end(); ++i) { + serializer.validate((*i)->getClassName()); + (*i)->synchronize(serializer); } // Loop through the remaining data of the file, instantiating new objects. @@ -187,17 +185,17 @@ Common::Error Saver::restore(int slot) { // of instantiating a saved object registers it with the saver, and will then be resolved to whatever // object originally had a pointer to it as part of the post-processing step Common::String className; - serialiser.syncString(className); + serializer.syncString(className); while (className != "END") { SavedObject *savedObject; if (!_factoryPtr || ((savedObject = _factoryPtr(className)) == NULL)) error("Unknown class name '%s' encountered trying to restore savegame", className.c_str()); // Populate the contents of the object - savedObject->synchronise(serialiser); + savedObject->synchronize(serializer); // Move to next object - serialiser.syncString(className); + serializer.syncString(className); } // Post-process any unresolved pointers to get the correct pointer @@ -208,6 +206,7 @@ Common::Error Saver::restore(int slot) { // Final post-restore notifications _macroRestoreFlag = false; _loadNotifiers.notify(false); + _globals->_events.setCursor(_globals->_player._uiEnabled ? CURSOR_WALK : CURSOR_NONE); return Common::kNoError; } @@ -225,7 +224,7 @@ bool Saver::readSavegameHeader(Common::InSaveFile *in, tSageSavegameHeader &head return false; header.version = in->readByte(); - if (header.version != TSAGE_SAVEGAME_VERSION) + if (header.version > TSAGE_SAVEGAME_VERSION) return false; // Read in the string @@ -376,7 +375,7 @@ void Saver::resolveLoadPointers() { // Outer loop through the main object list int objIndex = 1; - for (SynchronisedList<SavedObject *>::iterator iObj = _objList.begin(); iObj != _objList.end(); ++iObj, ++objIndex) { + for (SynchronizedList<SavedObject *>::iterator iObj = _objList.begin(); iObj != _objList.end(); ++iObj, ++objIndex) { Common::List<SavedObjectRef>::iterator iPtr; SavedObject *pObj = *iObj; |