aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMatthew Stewart2018-07-29 01:36:42 -0400
committerEugene Sandulenko2018-08-09 08:37:30 +0200
commitf33f548884db84bfebea1a4edc049959607b000b (patch)
tree822f03a0298f10e4fa5c5259b476bf9b86399202 /engines
parent359b0c23075e216df581a0b89ebba9d3ef4251c9 (diff)
downloadscummvm-rg350-f33f548884db84bfebea1a4edc049959607b000b.tar.gz
scummvm-rg350-f33f548884db84bfebea1a4edc049959607b000b.tar.bz2
scummvm-rg350-f33f548884db84bfebea1a4edc049959607b000b.zip
STARTREK: Saving/loading for SINS mission
Diffstat (limited to 'engines')
-rw-r--r--engines/startrek/awaymission.h37
-rw-r--r--engines/startrek/room.h6
-rw-r--r--engines/startrek/saveload.cpp3
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