diff options
Diffstat (limited to 'engines/tsage')
-rw-r--r-- | engines/tsage/saveload.cpp | 3 | ||||
-rw-r--r-- | engines/tsage/saveload.h | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/engines/tsage/saveload.cpp b/engines/tsage/saveload.cpp index f495f5a433..1ad7fa5ed0 100644 --- a/engines/tsage/saveload.cpp +++ b/engines/tsage/saveload.cpp @@ -121,6 +121,7 @@ Common::Error Saver::save(int slot, const Common::String &saveName) { // Set up the serialiser Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving(_vm->generateSaveName(slot)); Serialiser serialiser(NULL, saveFile); + serialiser.setSaveVersion(TSAGE_SAVEGAME_VERSION); // Write out the savegame header tSageSavegameHeader header; @@ -171,6 +172,8 @@ Common::Error Saver::restore(int slot) { readSavegameHeader(saveFile, header); delete header.thumbnail; + serialiser.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); diff --git a/engines/tsage/saveload.h b/engines/tsage/saveload.h index b1b98ce640..ec7cc7e496 100644 --- a/engines/tsage/saveload.h +++ b/engines/tsage/saveload.h @@ -68,6 +68,12 @@ class Serialiser : public Common::Serializer { public: Serialiser(Common::SeekableReadStream *in, Common::WriteStream *out) : Common::Serializer(in, out) {} + // HACK: TSAGE saved games contain a single byte for the savegame version, + // thus the normal syncVersion() Serializer member won't work here. In order + // to maintain compatibility with older game saves, this method is provided + // in order to set the savegame version from a byte + void setSaveVersion(byte version) { _version = version; } + void syncPointer(SavedObject **ptr, Common::Serializer::Version minVersion = 0, Common::Serializer::Version maxVersion = kLastVersion); void validate(const Common::String &s, Common::Serializer::Version minVersion = 0, |