diff options
author | Matthew Stewart | 2018-07-26 00:42:24 -0400 |
---|---|---|
committer | Eugene Sandulenko | 2018-08-09 08:37:30 +0200 |
commit | 20904176129e7ad6f9435e9563e1fa0bca5cb0f6 (patch) | |
tree | adc0610471c8a08796fe4327741e63920f7ab9b8 /engines/startrek/saveload.cpp | |
parent | e3f00320ad76121430714f094dc8e9353eb04f2b (diff) | |
download | scummvm-rg350-20904176129e7ad6f9435e9563e1fa0bca5cb0f6.tar.gz scummvm-rg350-20904176129e7ad6f9435e9563e1fa0bca5cb0f6.tar.bz2 scummvm-rg350-20904176129e7ad6f9435e9563e1fa0bca5cb0f6.zip |
STARTREK: Move save/load code for rooms to structs
Diffstat (limited to 'engines/startrek/saveload.cpp')
-rw-r--r-- | engines/startrek/saveload.cpp | 339 |
1 files changed, 12 insertions, 327 deletions
diff --git a/engines/startrek/saveload.cpp b/engines/startrek/saveload.cpp index cac8a7830d..f42d2f128b 100644 --- a/engines/startrek/saveload.cpp +++ b/engines/startrek/saveload.cpp @@ -307,338 +307,23 @@ bool StarTrekEngine::saveOrLoadGameData(Common::SeekableReadStream *in, Common:: ser.syncAsByte(_awayMission.crewDirectionsAfterWalk[i]); if (_missionName == "DEMON") { - ser.syncAsByte(_awayMission.demon.wasRudeToPrelate); - ser.syncAsByte(_awayMission.demon.insultedStephen); - ser.syncAsByte(_awayMission.demon.field2d); - ser.syncAsByte(_awayMission.demon.beatKlingons); - ser.syncAsByte(_awayMission.demon.tookKlingonHand); - ser.syncAsByte(_awayMission.demon.talkedToPrelate); - ser.syncAsByte(_awayMission.demon.stephenWelcomedToStudy); - ser.syncAsByte(_awayMission.demon.prelateWelcomedCrew); - ser.syncAsByte(_awayMission.demon.askedPrelateAboutSightings); - ser.syncAsByte(_awayMission.demon.field37); - ser.syncAsByte(_awayMission.demon.mccoyMentionedFlora); - ser.syncAsByte(_awayMission.demon.numBouldersGone); - ser.syncAsByte(_awayMission.demon.enteredFrom); - ser.syncAsByte(_awayMission.demon.repairedHand); - ser.syncAsByte(_awayMission.demon.healedMiner); - ser.syncAsByte(_awayMission.demon.curedChub); - ser.syncAsByte(_awayMission.demon.field3e); - ser.syncAsByte(_awayMission.demon.knowAboutHypoDytoxin); - ser.syncAsByte(_awayMission.demon.minerDead); - ser.syncAsByte(_awayMission.demon.field41); - ser.syncAsByte(_awayMission.demon.foundMiner); - ser.syncAsByte(_awayMission.demon.field45); - ser.syncAsByte(_awayMission.demon.gaveSkullToNauian); - ser.syncAsByte(_awayMission.demon.warpsDisabled); - ser.syncAsByte(_awayMission.demon.boulder1Gone); - ser.syncAsByte(_awayMission.demon.boulder2Gone); - ser.syncAsByte(_awayMission.demon.boulder3Gone); - ser.syncAsByte(_awayMission.demon.boulder4Gone); - ser.syncAsByte(_awayMission.demon.doorOpened); - ser.syncAsByte(_awayMission.demon.solvedSunPuzzle); - ser.syncAsByte(_awayMission.demon.itemsTakenFromCase); - ser.syncAsByte(_awayMission.demon.gotBerries); - ser.syncAsByte(_awayMission.demon.madeHypoDytoxin); - ser.syncAsByte(_awayMission.demon.metNauian); - ser.syncAsByte(_awayMission.demon.gavePointsForDytoxin); - ser.syncAsByte(_awayMission.demon.lookedAtComputer); - ser.syncAsByte(_awayMission.demon.field56); - ser.syncAsByte(_awayMission.demon.foundAlienRoom); - ser.syncAsSint16LE(_awayMission.demon.missionScore); - - // demon0 - ser.syncAsByte(_room->_roomVar.demon.bottomDoorCounter); - ser.syncAsByte(_room->_roomVar.demon.topDoorCounter); - ser.syncAsByte(_room->_roomVar.demon.movingToTopDoor); - ser.syncAsByte(_room->_roomVar.demon.movingToBottomDoor); - - // demon1 - ser.syncBytes((byte *)_room->_roomVar.demon.klingonShot, 3); - ser.syncAsSint16LE(_room->_roomVar.demon.numKlingonsKilled); - ser.syncAsByte(_room->_roomVar.demon.attackIndex); - ser.syncAsByte(_room->_roomVar.demon.kirkShooting); - ser.syncBytes((byte *)_room->_roomVar.demon.d6, 10); - - // demon3 - ser.syncAsByte(_room->_roomVar.demon.shootingBoulder); - ser.syncAsByte(_room->_roomVar.demon.boulder1Shot); - ser.syncAsByte(_room->_roomVar.demon.boulderBeingShot); - ser.syncAsByte(_room->_roomVar.demon.kirkInPosition); - ser.syncAsByte(_room->_roomVar.demon.redshirtInPosition); - ser.syncAsByte(_room->_roomVar.demon.spockInPosition); - ser.syncAsByte(_room->_roomVar.demon.mccoyInPosition); - ser.syncAsByte(_room->_roomVar.demon.inFiringPosition); - ser.syncAsByte(_room->_roomVar.demon.kirkPhaserOut); - ser.syncBytes((byte *)_room->_roomVar.demon.boulderAnim, 10); - ser.syncAsSint16LE(_room->_roomVar.demon.usedPhaserOnDoor); - - // demon4 - ser.syncAsByte(_room->_roomVar.demon.triedToShootNauian); - ser.syncAsByte(_room->_roomVar.demon.nauianEmerged); - ser.syncAsByte(_room->_roomVar.demon.disabledSecurity); - ser.syncAsByte(_room->_roomVar.demon.cd); - ser.syncAsByte(_room->_roomVar.demon.crewReadyToBeamOut); - ser.syncAsSint16LE(_room->_roomVar.demon.crewmanUsingPanel); - - // demon5 - ser.syncAsByte(_room->_roomVar.demon.scannedRoberts); - ser.syncAsByte(_room->_roomVar.demon.scannedChub); - ser.syncAsByte(_room->_roomVar.demon.scannedGrisnash); - ser.syncAsByte(_room->_roomVar.demon.scannedStephen); - ser.syncAsByte(_room->_roomVar.demon.numScanned); - ser.syncAsByte(_room->_roomVar.demon.numTalkedTo); - ser.syncAsByte(_room->_roomVar.demon.talkedToRoberts); - ser.syncAsByte(_room->_roomVar.demon.talkedToChub); - ser.syncAsByte(_room->_roomVar.demon.talkedToGrisnash); - ser.syncAsByte(_room->_roomVar.demon.talkedToStephen); - - // demon6 - ser.syncAsByte(_room->_roomVar.demon.insultedStephenRecently); - ser.syncAsByte(_room->_roomVar.demon.stephenInRoom); - ser.syncAsByte(_room->_roomVar.demon.caseOpened); - - // common - ser.syncAsByte(_room->_roomVar.demon.movingToDoor); - ser.syncAsByte(_room->_roomVar.demon.doorCounter); + _awayMission.demon.saveLoadWithSerializer(ser); + _room->_roomVar.demon.saveLoadWithSerializer(ser); } else if (_missionName == "TUG") { - ser.syncAsSint16LE(_awayMission.tug.missionScore); - ser.syncAsSint16LE(_awayMission.tug.field2b); - ser.syncAsSint16LE(_awayMission.tug.field2d); - ser.syncAsByte(_awayMission.tug.engineerConscious); - ser.syncAsByte(_awayMission.tug.field35); - ser.syncAsByte(_awayMission.tug.gotWires); - ser.syncAsByte(_awayMission.tug.orbitalDecayCounter); - ser.syncAsByte(_awayMission.tug.bridgeElasiDrewPhasers); - ser.syncAsByte(_awayMission.tug.talkedToCereth); - ser.syncAsByte(_awayMission.tug.gotJunkPile); - ser.syncAsByte(_awayMission.tug.gotTransmogrifier); - ser.syncAsByte(_awayMission.tug.transporterRepaired); - ser.syncAsByte(_awayMission.tug.spockExaminedTransporter); - ser.syncAsByte(_awayMission.tug.usedTransmogrifierOnTransporter); - ser.syncAsByte(_awayMission.tug.bridgeForceFieldDown); - ser.syncAsByte(_awayMission.tug.savedPrisoners); - ser.syncAsByte(_awayMission.tug.haveBomb); - ser.syncAsByte(_awayMission.tug.brigElasiPhasersOnKill); - ser.syncAsByte(_awayMission.tug.elasiTargetIndex); - ser.syncAsByte(_awayMission.tug.guard1Status); - ser.syncAsByte(_awayMission.tug.guard2Status); - ser.syncAsByte(_awayMission.tug.field4e); - ser.syncBytes(_awayMission.tug.crewmanKilled, 4); - ser.syncAsByte(_awayMission.tug.bridgeElasi1Status); - ser.syncAsByte(_awayMission.tug.bridgeElasi2Status); - ser.syncAsByte(_awayMission.tug.bridgeElasi3Status); - ser.syncAsByte(_awayMission.tug.bridgeElasi4Status); - ser.syncAsByte(_awayMission.tug.brigForceFieldDown); - ser.syncAsByte(_awayMission.tug.field59); - ser.syncAsByte(_awayMission.tug.field5b); - ser.syncAsByte(_awayMission.tug.elasiSurrendered); - ser.syncAsByte(_awayMission.tug.kirkPhaserDrawn); - ser.syncAsByte(_awayMission.tug.bridgeWinMethod); - ser.syncAsByte(_awayMission.tug.talkedToBrigCrewman); - - // tug2 - ser.syncAsByte(_room->_roomVar.tug.shootingObject); - ser.syncAsByte(_room->_roomVar.tug.shootingTarget); - ser.syncAsByte(_room->_roomVar.tug.elasiPhaserOnKill); - ser.syncAsByte(_room->_roomVar.tug.shootKirkOverride); + _awayMission.tug.saveLoadWithSerializer(ser); + _room->_roomVar.tug.saveLoadWithSerializer(ser); } else if (_missionName == "LOVE") { - ser.syncAsByte(_awayMission.love.alreadyStartedMission); - ser.syncAsByte(_awayMission.love.knowAboutVirus); - ser.syncAsByte(_awayMission.love.romulansUnconsciousFromLaughingGas); - ser.syncAsByte(_awayMission.love.releasedHumanLaughingGas); - ser.syncAsByte(_awayMission.love.releasedRomulanLaughingGas); - ser.syncAsByte(_awayMission.love.chamberHasCure); - ser.syncAsByte(_awayMission.love.freezerOpen); - ser.syncAsByte(_awayMission.love.chamberHasDish); - ser.syncAsByte(_awayMission.love.bottleInNozzle); - ser.syncAsByte(_awayMission.love.cabinetOpen); - ser.syncAsByte(_awayMission.love.gasFeedOn); - ser.syncAsByte(_awayMission.love.synthesizerBottleIndex); - ser.syncAsByte(_awayMission.love.synthesizerContents); - ser.syncAsByte(_awayMission.love.canister1); - ser.syncAsByte(_awayMission.love.canister2); - ser.syncAsByte(_awayMission.love.servicePanelOpen); - ser.syncAsByte(_awayMission.love.gasTankUnscrewed); - ser.syncAsByte(_awayMission.love.wrenchTaken); - ser.syncAsByte(_awayMission.love.tookN2TankFromServicePanel); - ser.syncAsByte(_awayMission.love.field3c); - ser.syncAsByte(_awayMission.love.grateRemoved); - ser.syncAsByte(_awayMission.love.insulationOnGround); - ser.syncAsByte(_awayMission.love.visitedRoomWithRomulans); - ser.syncAsByte(_awayMission.love.romulansCured); - ser.syncAsByte(_awayMission.love.romulansUnconsciousFromVirus); - ser.syncAsByte(_awayMission.love.freedMarcusAndCheever); - ser.syncAsByte(_awayMission.love.preaxCured); - ser.syncAsByte(_awayMission.love.spockInfectionCounter); - ser.syncAsByte(_awayMission.love.spockCured); - ser.syncAsByte(_awayMission.love.contactedEnterpriseBeforeCure); - ser.syncAsByte(_awayMission.love.contactedEnterpriseAfterCure); - ser.syncAsByte(_awayMission.love.spockAccessedConsole); - ser.syncAsByte(_awayMission.love.mccoyAccessedConsole); - ser.syncAsByte(_awayMission.love.gotPolyberylcarbonate); - ser.syncAsByte(_awayMission.love.gotTLDH); - ser.syncAsByte(_awayMission.love.gotPointsForOpeningGrate); - ser.syncAsByte(_awayMission.love.gotPointsForGassingRomulans); - ser.syncAsByte(_awayMission.love.gotCure); - ser.syncAsByte(_awayMission.love.gotPointsForHydratingPreax); - ser.syncAsByte(_awayMission.love.gotPointsForHydratingRomulans); - ser.syncAsSint16LE(_awayMission.love.missionScore); - - // love0 - ser.syncAsByte(_room->_roomVar.love.heardSummaryOfVirus); - ser.syncAsSint16LE(_room->_roomVar.love.consoleCrewman); - ser.syncBytes((byte *)_room->_roomVar.love.consoleAnimation, 10); - ser.syncAsSint32LE(_room->_roomVar.love.consoleSpeaker); - ser.syncAsSint32LE(_room->_roomVar.love.consoleText); - - // love1 - ser.syncAsSint32LE(_room->_roomVar.love.dyingSpeaker); - ser.syncAsSint16LE(_room->_roomVar.love.crewmanUsingFreezerRetX); - ser.syncAsSint16LE(_room->_roomVar.love.crewmanUsingFreezerRetY); - ser.syncAsSint16LE(_room->_roomVar.love.crewmanUsingDevice); - ser.syncAsSint16LE(_room->_roomVar.love.itemInNozzle); - ser.syncBytes((byte *)_room->_roomVar.love.bottleAnimation, 10); - - // love2 - ser.syncAsByte(_room->_roomVar.love.canisterType); - ser.syncAsByte(_room->_roomVar.love.cb); - ser.syncAsSint16LE(_room->_roomVar.love.canisterItem); - ser.syncBytes((byte *)_room->_roomVar.love.canisterAnim, 10); - ser.syncAsSint16LE(_room->_roomVar.love.chamberObject); - ser.syncBytes((byte *)_room->_roomVar.love.chamberInputAnim, 10); - ser.syncBytes((byte *)_room->_roomVar.love.chamberOutputAnim, 10); - - // love3 - ser.syncAsByte(_room->_roomVar.love.activeCrewman); - - // love4 - ser.syncAsByte(_room->_roomVar.love.gaveWaterToRomulans); - - // love5 - ser.syncAsByte(_room->_roomVar.love.numCrewmenReadyToBeamOut); - - // common - ser.syncAsByte(_room->_roomVar.love.walkingToDoor); - ser.syncAsByte(_room->_roomVar.love.doorOpenCounter); - ser.syncAsByte(_room->_roomVar.love.spockAndMccoyReadyToUseCure); - ser.syncAsByte(_room->_roomVar.love.cmnXPosToCureSpock); - ser.syncAsByte(_room->_roomVar.love.cmnYPosToCureSpock); + _awayMission.love.saveLoadWithSerializer(ser); + _room->_roomVar.love.saveLoadWithSerializer(ser); } else if (_missionName == "MUDD") { - ser.syncAsByte(_awayMission.mudd.muddFirstRoomState); - ser.syncAsByte(_awayMission.mudd.torpedoLoaded); - ser.syncAsByte(_awayMission.mudd.knowAboutTorpedo); - ser.syncAsByte(_awayMission.mudd.discoveredBase3System); - ser.syncAsByte(_awayMission.mudd.translatedAlienLanguage); - ser.syncAsByte(_awayMission.mudd.databaseDestroyed); - ser.syncAsByte(_awayMission.mudd.muddInDatabaseRoom); - ser.syncAsByte(_awayMission.mudd.muddCurrentlyInsane); - ser.syncAsByte(_awayMission.mudd.computerDataErasedOrDestroyed); - ser.syncAsByte(_awayMission.mudd.muddErasedDatabase); - ser.syncAsByte(_awayMission.mudd.discoveredLenseAndDegrimerFunction); - ser.syncAsSint16LE(_awayMission.mudd.torpedoStatus); - ser.syncAsByte(_awayMission.mudd.muddUnavailable); - ser.syncAsByte(_awayMission.mudd.muddVisitedDatabaseRoom); - ser.syncAsByte(_awayMission.mudd.accessedAlienDatabase); - ser.syncAsByte(_awayMission.mudd.tookRepairTool); - ser.syncAsByte(_awayMission.mudd.gotPointsForDownloadingData); - ser.syncAsByte(_awayMission.mudd.contactedEnterpriseFirstTime); - ser.syncAsByte(_awayMission.mudd.viewScreenEnabled); - ser.syncAsByte(_awayMission.mudd.lifeSupportMalfunctioning); - ser.syncAsByte(_awayMission.mudd.numTimesEnteredRoom5); - ser.syncAsByte(_awayMission.mudd.gotMemoryDisk); - ser.syncAsByte(_awayMission.mudd.gotLense); - ser.syncAsByte(_awayMission.mudd.gotDegrimer); - ser.syncAsByte(_awayMission.mudd.putCapsuleInMedicalMachine); - ser.syncAsByte(_awayMission.mudd.muddUnconscious); - ser.syncAsByte(_awayMission.mudd.muddInsanityState); - ser.syncAsByte(_awayMission.mudd.muddInhaledGas); - ser.syncAsSint16LE(_awayMission.mudd.lifeSupportTimer); - ser.syncAsByte(_awayMission.mudd.startedLifeSupportTimer); - ser.syncAsByte(_awayMission.mudd.enteredRoom0ForFirstTime); - ser.syncAsByte(_awayMission.mudd.gotPointsForLoadingTorpedo); - ser.syncAsByte(_awayMission.mudd.gotPointsForPressingRedButton); - ser.syncAsByte(_awayMission.mudd.gotPointsForEnablingViewscreen); - ser.syncAsByte(_awayMission.mudd.enteredRoom1ForFirstTime); - ser.syncAsByte(_awayMission.mudd.repairedLifeSupportGenerator); - ser.syncAsSint16LE(_awayMission.mudd.missionScore); - - // mudd3 - ser.syncAsByte(_room->_roomVar.mudd.suggestedUsingTricorders); - ser.syncAsByte(_room->_roomVar.mudd.tricordersUnavailable); - - // mudd4 - ser.syncAsByte(_room->_roomVar.mudd.usingLeftConsole); - ser.syncAsByte(_room->_roomVar.mudd.kirkUsingRightConsole); - - // common - ser.syncAsByte(_room->_roomVar.mudd.walkingToDoor); + _awayMission.mudd.saveLoadWithSerializer(ser); + _room->_roomVar.mudd.saveLoadWithSerializer(ser); } else if (_missionName == "FEATHER") { - ser.syncAsByte(_awayMission.feather.diedFromStalactites); - ser.syncAsByte(_awayMission.feather.vineState); - ser.syncAsByte(_awayMission.feather.gotRock); - ser.syncAsByte(_awayMission.feather.gotSnake); - ser.syncAsByte(_awayMission.feather.tookKnife); - ser.syncAsByte(_awayMission.feather.field2e); - ser.syncAsByte(_awayMission.feather.numRocksThrownAtTlaoxac); - ser.syncAsByte(_awayMission.feather.gotFern); - ser.syncAsByte(_awayMission.feather.holeBlocked); - ser.syncAsByte(_awayMission.feather.tlaoxacTestPassed); - ser.syncAsByte(_awayMission.feather.knockedOutTlaoxac); - ser.syncAsByte(_awayMission.feather.waterMonsterRetreated); - ser.syncAsByte(_awayMission.feather.showedSnakeToTlaoxac); - ser.syncAsSint16LE(_awayMission.feather.missionScore); - - // feather1 - ser.syncAsByte(_room->_roomVar.feather.snakeInHole); - ser.syncAsByte(_room->_roomVar.feather.scannedSnake); - ser.syncBytes(_room->_roomVar.feather.crewEscaped, 4); - ser.syncAsByte(_room->_roomVar.feather.crewmanClimbingVine); - - // feather2 - ser.syncAsByte(_room->_roomVar.feather.showedSnakeToTlaoxac); - ser.syncAsByte(_room->_roomVar.feather.tlaoxacUnconscious); - - // feather6 - ser.syncAsByte(_room->_roomVar.feather.usedRockOnCrystalsOnce); - - // feather7 - ser.syncAsByte(_room->_roomVar.feather.insultedQuetzecoatl); + _awayMission.feather.saveLoadWithSerializer(ser); + _room->_roomVar.feather.saveLoadWithSerializer(ser); } else if (_missionName == "TRIAL") { - ser.syncAsSint16LE(_awayMission.trial.missionScore); - ser.syncAsSint16LE(_awayMission.trial.field2b); - ser.syncAsByte(_awayMission.trial.entityDefeated); - ser.syncAsByte(_awayMission.trial.doorOpen); - ser.syncAsByte(_awayMission.trial.scannedLock); - ser.syncAsByte(_awayMission.trial.doorCodeBehaviour); - ser.syncAsByte(_awayMission.trial.globSplitInTwo); - ser.syncAsByte(_awayMission.trial.globDefeated); - ser.syncBytes(_awayMission.trial.globEnergyLevels, 3); - ser.syncAsByte(_awayMission.trial.enteredTrial3FirstTime); - ser.syncAsByte(_awayMission.trial.klingonShootIndex); - ser.syncAsByte(_awayMission.trial.shotKlingons); - ser.syncAsSint16LE(_awayMission.trial.shotKlingonState); - ser.syncAsByte(_awayMission.trial.neuralInterfaceActive); - for (int i = 0; i < 3; i++) - ser.syncAsSint16LE(_awayMission.trial.holeContents[i]); - ser.syncAsByte(_awayMission.trial.enteredGlobRoom); - ser.syncAsByte(_awayMission.trial.forceFieldDown); - ser.syncAsByte(_awayMission.trial.uhuraAnalyzedCode); - ser.syncAsSint16LE(_awayMission.trial.missionEndMethod); - ser.syncAsByte(_awayMission.trial.gotPointsForGettingRod); - ser.syncAsByte(_awayMission.trial.gotPointsForCoatingRodWithIron); - ser.syncAsByte(_awayMission.trial.gotPointsForActivatingInterface); - ser.syncAsByte(_awayMission.trial.gotPointsForScanningGlob); - ser.syncAsByte(_awayMission.trial.gotPointsForBeamingOut); - - // trial2 - ser.syncAsByte(_room->_roomVar.trial.globBeingShot); - ser.syncAsByte(_room->_roomVar.trial.phaserOnKill); - - // trial5 - ser.syncAsSint16LE(_room->_roomVar.trial.itemToUse); - ser.syncAsSint16LE(_room->_roomVar.trial.objectToUse); - ser.syncAsSint16LE(_room->_roomVar.trial.hole); + _awayMission.trial.saveLoadWithSerializer(ser); + _room->_roomVar.trial.saveLoadWithSerializer(ser); } // The action queue |