aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/engine/object.h5
-rw-r--r--engines/sci/engine/savegame.cpp14
-rw-r--r--engines/sci/engine/savegame.h3
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
,