diff options
-rw-r--r-- | engines/startrek/awaymission.h | 37 | ||||
-rw-r--r-- | engines/startrek/room.h | 6 | ||||
-rw-r--r-- | engines/startrek/saveload.cpp | 3 |
3 files changed, 46 insertions, 0 deletions
diff --git a/engines/startrek/awaymission.h b/engines/startrek/awaymission.h index 0c6f3386fb..5771b31886 100644 --- a/engines/startrek/awaymission.h +++ b/engines/startrek/awaymission.h @@ -580,6 +580,43 @@ struct AwayMission { bool enteredRoom1FirstTime; // 0x50 bool gotPointsForEnteringRoom5; // 0x51 int16 missionScore; // 0x52 + + void saveLoadWithSerializer(Common::Serializer &ser) { + ser.syncAsByte(field31); + ser.syncAsByte(field32); + ser.syncAsByte(field33); + ser.syncAsByte(doorLaserFiredOnce); + ser.syncAsByte(gotPointsForAccessingTerminal); + ser.syncAsByte(scannedKeycardLock); + ser.syncAsByte(laserSetting); + ser.syncAsByte(laserPattern); + ser.syncAsByte(gatheredClues); + ser.syncAsByte(scannedAndUsedComputers); + ser.syncAsByte(wireConnected1); + ser.syncAsByte(wireConnected2); + ser.syncAsByte(openedOuterDoor); + ser.syncAsByte(openedInnerDoor); + ser.syncAsByte(unlockedIDCardDoor); + ser.syncAsByte(moldState); + ser.syncAsByte(boxState); + ser.syncAsByte(enteredRoom0FirstTime); + ser.syncAsByte(scottyInformedKirkAboutVirus); + ser.syncAsByte(enteredRoom2FirstTime); + ser.syncAsByte(enteredRoom3FirstTime); + ser.syncAsByte(enteredRoom4FirstTime); + ser.syncAsByte(enteredRoom5FirstTime); + ser.syncAsByte(gotPointsForScanningStatue); + ser.syncAsByte(gotPointsForScanningRoom4); + ser.syncAsByte(gotPointsForScanningRoom5); + ser.syncAsByte(gotPointsForScanningRightComputer); + ser.syncAsByte(gotPointsForScanningLeftComputer); + ser.syncAsByte(gotPointsForUsingRightComputer); + ser.syncAsByte(gotPointsForUsingLeftComputer); + ser.syncAsByte(discoveredComputersOutOfSync); + ser.syncAsByte(enteredRoom1FirstTime); + ser.syncAsByte(gotPointsForEnteringRoom5); + ser.syncAsSint16LE(missionScore); + } } sins; }; }; diff --git a/engines/startrek/room.h b/engines/startrek/room.h index 8781dfa2a0..20615bd6c9 100644 --- a/engines/startrek/room.h +++ b/engines/startrek/room.h @@ -2734,8 +2734,14 @@ public: } trial; struct { + // sins5 byte numCrewmenInPositionForWire; // 0xca byte numCrewmenReadyToBeamOut; // 0xcb + + void saveLoadWithSerializer(Common::Serializer &ser) { + ser.syncAsByte(numCrewmenInPositionForWire); + ser.syncAsByte(numCrewmenReadyToBeamOut); + } } sins; } _roomVar; diff --git a/engines/startrek/saveload.cpp b/engines/startrek/saveload.cpp index e7a288c6ad..d5d265ac2a 100644 --- a/engines/startrek/saveload.cpp +++ b/engines/startrek/saveload.cpp @@ -325,6 +325,9 @@ bool StarTrekEngine::saveOrLoadGameData(Common::SeekableReadStream *in, Common:: } else if (_missionName == "TRIAL") { _awayMission.trial.saveLoadWithSerializer(ser); _room->_roomVar.trial.saveLoadWithSerializer(ser); + } else if (_missionName == "SINS") { + _awayMission.sins.saveLoadWithSerializer(ser); + _room->_roomVar.sins.saveLoadWithSerializer(ser); } // The action queue |