diff options
-rw-r--r-- | engines/sci/engine/object.h | 5 | ||||
-rw-r--r-- | engines/sci/engine/savegame.cpp | 14 | ||||
-rw-r--r-- | engines/sci/engine/savegame.h | 3 |
3 files changed, 16 insertions, 6 deletions
diff --git a/engines/sci/engine/object.h b/engines/sci/engine/object.h index 3b81497261..75ab128de5 100644 --- a/engines/sci/engine/object.h +++ b/engines/sci/engine/object.h @@ -264,6 +264,11 @@ public: _baseObj = obj ? obj->_baseObj : SciSpan<const byte>(); _baseMethod = obj ? obj->_baseMethod : Common::Array<uint32>(); _baseVars = obj ? obj->_baseVars : Common::Array<uint16>(); +#ifdef ENABLE_SCI32 + if (getSciVersion() == SCI_VERSION_3) { + _mustSetViewVisible = obj ? obj->_mustSetViewVisible : Common::Array<bool>(); + } +#endif } bool relocateSci0Sci21(SegmentId segment, int location, size_t scriptSize); diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp index 433878429e..427e32deb3 100644 --- a/engines/sci/engine/savegame.cpp +++ b/engines/sci/engine/savegame.cpp @@ -104,10 +104,6 @@ void syncWithSerializer(Common::Serializer &s, Node &obj) { syncWithSerializer(s, obj.value); } -void syncWithSerializer(Common::Serializer &s, bool &obj) { - s.syncAsByte(obj); -} - #pragma mark - // By default, sync using syncWithSerializer, which in turn can easily be overloaded. @@ -427,12 +423,20 @@ void Object::saveLoadWithSerializer(Common::Serializer &s) { s.syncAsSint32LE(_methodCount); // that's actually a uint16 syncArray<reg_t>(s, _variables); + +#ifdef ENABLE_SCI32 if (s.getVersion() >= 42 && getSciVersion() == SCI_VERSION_3) { - syncArray<bool>(s, _mustSetViewVisible); + // Obsolete mustSetViewVisible array + if (s.getVersion() == 42 && s.isLoading()) { + uint32 len; + s.syncAsUint32LE(len); + s.skip(len); + } syncWithSerializer(s, _superClassPosSci3); syncWithSerializer(s, _speciesSelectorSci3); syncWithSerializer(s, _infoSelectorSci3); } +#endif } diff --git a/engines/sci/engine/savegame.h b/engines/sci/engine/savegame.h index 6284897bd0..151585ac77 100644 --- a/engines/sci/engine/savegame.h +++ b/engines/sci/engine/savegame.h @@ -37,6 +37,7 @@ struct EngineState; * * Version - new/changed feature * ============================= + * 43 - stop saving SCI3 mustSetViewVisible array * 42 - SCI3 robots and VM objects * 41 - palette support for newer SCI2.1 games; stable SCI2/2.1 save games * 40 - always store palvary variables @@ -67,7 +68,7 @@ struct EngineState; */ enum { - CURRENT_SAVEGAME_VERSION = 42, + CURRENT_SAVEGAME_VERSION = 43, MINIMUM_SAVEGAME_VERSION = 14 #ifdef ENABLE_SCI32 , |