diff --git a/engines/pegasus/items/biochips/mapimage.h b/engines/pegasus/items/biochips/mapimage.h index 43a13ac40468..d21d29c63e68 100755 --- a/engines/pegasus/items/biochips/mapimage.h +++ b/engines/pegasus/items/biochips/mapimage.h @@ -28,7 +28,7 @@ #include "pegasus/elements.h" #include "pegasus/util.h" -#include "pegasus/neighborhood/mars/mars.h" +#include "pegasus/neighborhood/mars/constants.h" namespace Common { class ReadStream; diff --git a/engines/pegasus/neighborhood/mars/constants.h b/engines/pegasus/neighborhood/mars/constants.h new file mode 100755 index 000000000000..c96a8a15229d --- /dev/null +++ b/engines/pegasus/neighborhood/mars/constants.h @@ -0,0 +1,941 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * Additional copyright for this file: + * Copyright (C) 1995-1997 Presto Studios, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef PEGASUS_NEIGHBORHOOD_MARS_CONSTANTS_H +#define PEGASUS_NEIGHBORHOOD_MARS_CONSTANTS_H + +#include "pegasus/constants.h" + +namespace Pegasus { + +// Element Coordinates + +const tCoordType kUndoHiliteLeft = kNavAreaLeft + 140; +const tCoordType kUndoHiliteTop = kNavAreaTop + 36; + +const tCoordType kCurrentGuessLeft = kNavAreaLeft + 146; +const tCoordType kCurrentGuessTop = kNavAreaTop + 90; + +const tCoordType kReactorChoiceHiliteLeft = kNavAreaLeft + 116; +const tCoordType kReactorChoiceHiliteTop = kNavAreaTop + 158; + +const tCoordType kReactorHistoryLeft = kNavAreaLeft + 302; +const tCoordType kReactorHistoryTop = kNavAreaTop + 39; + +const tCoordType kAnswerLeft = kNavAreaLeft + 304; +const tCoordType kAnswerTop = kNavAreaTop + 180; + +const tCoordType kShuttle1Left = 0; +const tCoordType kShuttle1Top = 0; + +const tCoordType kShuttle2Left = 0; +const tCoordType kShuttle2Top = 96; + +const tCoordType kShuttle3Left = 500; +const tCoordType kShuttle3Top = 96; + +const tCoordType kShuttle4Left = 0; +const tCoordType kShuttle4Top = 320; + +const tCoordType kShuttleWindowLeft = 140; +const tCoordType kShuttleWindowTop = 96; +const tCoordType kShuttleWindowWidth = 360; +const tCoordType kShuttleWindowHeight = 224; + +const tCoordType kShuttleWindowMidH = (kShuttleWindowLeft * 2 + kShuttleWindowWidth) / 2; +const tCoordType kShuttleWindowMidV = (kShuttleWindowTop * 2 + kShuttleWindowHeight) / 2; + +const tCoordType kShuttleLeftLeft = 0; +const tCoordType kShuttleLeftTop = 128; + +const tCoordType kShuttleRightLeft = 506; +const tCoordType kShuttleRightTop = 128; + +const tCoordType kShuttleLowerLeftLeft = 74; +const tCoordType kShuttleLowerLeftTop = 358; + +const tCoordType kShuttleLowerRightLeft = 486; +const tCoordType kShuttleLowerRightTop = 354; + +const tCoordType kShuttleCenterLeft = 260; +const tCoordType kShuttleCenterTop = 336; + +const tCoordType kShuttleUpperLeftLeft = 30; +const tCoordType kShuttleUpperLeftTop = 32; + +const tCoordType kShuttleUpperRightLeft = 506; +const tCoordType kShuttleUpperRightTop = 52; + +const tCoordType kShuttleLeftEnergyLeft = 110; +const tCoordType kShuttleLeftEnergyTop = 186; + +const tCoordType kShuttleRightEnergyLeft = 510; +const tCoordType kShuttleRightEnergyTop = 186; + +const tCoordType kShuttleEnergyLeft = 186; +const tCoordType kShuttleEnergyTop = 60; +const tCoordType kShuttleEnergyWidth = 252; +const tCoordType kShuttleEnergyHeight = 22; + +const tCoordType kPlanetStartLeft = kShuttleWindowLeft; +const tCoordType kPlanetStartTop = kShuttleWindowTop + kShuttleWindowHeight; + +const tCoordType kPlanetStopLeft = kShuttleWindowLeft; +const tCoordType kPlanetStopTop = kShuttleWindowTop + kShuttleWindowHeight - 100; + +const tCoordType kShuttleTractorLeft = kShuttleWindowLeft + 6; +const tCoordType kShuttleTractorTop = kShuttleWindowTop + 56; +const tCoordType kShuttleTractorWidth = 348; +const tCoordType kShuttleTractorHeight = 112; + +const tCoordType kShuttleJunkLeft = kShuttleWindowLeft + 6; +const tCoordType kShuttleJunkTop = kShuttleWindowTop + 6; + +const tDisplayOrder kShuttlePlanetOrder = kInterfaceLayer; +const tDisplayOrder kShuttleAlienShipOrder = kShuttlePlanetOrder + 1; +const tDisplayOrder kShuttleRobotShipOrder = kShuttleAlienShipOrder + 1; +const tDisplayOrder kShuttleTractorBeamMovieOrder = kShuttleRobotShipOrder + 1; +const tDisplayOrder kShuttleWeaponBackOrder = kShuttleTractorBeamMovieOrder + 1; +const tDisplayOrder kShuttleJunkOrder = kShuttleWeaponBackOrder + 1; +const tDisplayOrder kShuttleWeaponFrontOrder = kShuttleJunkOrder + 1; +const tDisplayOrder kShuttleTractorBeamOrder = kShuttleWeaponFrontOrder + 1; +const tDisplayOrder kShuttleHUDOrder = kShuttleTractorBeamOrder + 1; +const tDisplayOrder kShuttleBackgroundOrder = kShuttleHUDOrder + 1; +const tDisplayOrder kShuttleMonitorOrder = kShuttleBackgroundOrder + 1; +const tDisplayOrder kShuttleStatusOrder = kShuttleMonitorOrder + 1; + +const TimeValue kShuttleSwingStart = 0; +const TimeValue kShuttleSwingStop = 5 * 600; + +const TimeValue kCanyonChaseStart = kShuttleSwingStop; +const TimeValue kCanyonChaseStop = 60 * 600 + 43 * 600 + 14 * 40; + +const TimeValue kLaunchTubeReachedTime = 60 * 600 + 38 * 600 - kCanyonChaseStart; +const TimeValue kCanyonChaseFinishedTime = kCanyonChaseStop - kCanyonChaseStart - + kLaunchTubeReachedTime; + +// Left shuttle. + +const TimeValue kShuttleLeftIntroStart = 0; +const TimeValue kShuttleLeftIntroStop = 400; + +const TimeValue kShuttleLeftBlankTime = 400; + +const TimeValue kShuttleLeftNormalTime = 440; + +const TimeValue kShuttleLeftAutoTestTime = 480; + +const TimeValue kShuttleLeftDamagedTime = 520; + +const TimeValue kShuttleLeftDampingTime = 560; + +const TimeValue kShuttleLeftGravitonTime = 600; + +const TimeValue kShuttleLeftTractorTime = 640; + +// Right shuttle. + +const TimeValue kShuttleRightIntroStart = 0; +const TimeValue kShuttleRightIntroStop = 400; + +const TimeValue kShuttleRightDestroyedStart = 400; +const TimeValue kShuttleRightDestroyedStop = 840; + +const TimeValue kShuttleRightBlankTime = 840; + +const TimeValue kShuttleRightNormalTime = 880; + +const TimeValue kShuttleRightDamagedTime = 920; + +const TimeValue kShuttleRightTargetLockTime = 960; + +const TimeValue kShuttleRightGravitonTime = 1000; + +const TimeValue kShuttleRightOverloadTime = 1040; + +// Lower Left shuttle. + +const TimeValue kShuttleLowerLeftCollisionTime = 0; + +const TimeValue kShuttleLowerLeftTubeTime = 40; + +const TimeValue kShuttleLowerLeftAutopilotTime = 80; + +// Lower Right shuttle. + +const TimeValue kShuttleLowerRightOffTime = 0; + +const TimeValue kShuttleLowerRightTrackingTime = 40; + +const TimeValue kShuttleLowerRightTransportTime = 80; + +const TimeValue kShuttleLowerRightTransportHiliteTime = 120; + +// Center shuttle. + +const TimeValue kShuttleCenterBoardingTime = 0; + +const TimeValue kShuttleCenterCheckTime = 40; + +const TimeValue kShuttleCenterNavCompTime = 80; + +const TimeValue kShuttleCenterCommTime = 120; + +const TimeValue kShuttleCenterWeaponsTime = 160; + +const TimeValue kShuttleCenterAllSystemsTime = 200; + +const TimeValue kShuttleCenterSecureLooseTime = 240; + +const TimeValue kShuttleCenterAutoTestTime = 280; + +const TimeValue kShuttleCenterLaunchTime = 320; + +const TimeValue kShuttleCenterEnterTubeTime = 360; + +const TimeValue kShuttleCenterTargetSightedTime = 400; + +const TimeValue kShuttleCenterVerifyingTime = 440; + +const TimeValue kShuttleCenterScanningTime = 480; + +const TimeValue kShuttleCenterSafeTime = 520; + +// Upper Left shuttle. + +const TimeValue kShuttleUpperLeftDimTime = 0; + +const TimeValue kShuttleUpperLeftDampingTime = 40; + +const TimeValue kShuttleUpperLeftGravitonTime = 80; + +const TimeValue kShuttleUpperLeftTractorTime = 120; + +// Upper Right shuttle. + +const TimeValue kShuttleUpperRightLockedTime = 0; + +const TimeValue kShuttleUpperRightArmedTime = 40; + +const TimeValue kShuttleUpperRightAlienDestroyedTime = 80; + +const TimeValue kShuttleUpperRightOverloadTime = 120; + +const TimeValue kShuttleUpperRightTargetDestroyedTime = 160; + +// Shuttle distance + +const int kShuttleDistance = 500; + +const int kJunkMaxDistance = kShuttleDistance; +const int kJunkMinDistance = 40; + +const int kEnergyBeamMaxDistance = kShuttleDistance; +const int kEnergyBeamMinDistance = 40; + +const int kGravitonMaxDistance = kShuttleDistance; +const int kGravitonMinDistance = 40; + +const TimeValue kMarsOxyMaskOnIn = 0; +const TimeValue kMarsOxyMaskOnOut = 1560; + +const TimeValue kMarsAirlockButtonBeepIn = 1560; +const TimeValue kMarsAirlockButtonBeepOut = 1620; + +const TimeValue kMarsColorMatchingButtonBeepIn = 1620; +const TimeValue kMarsColorMatchingButtonBeepOut = 1680; + +const TimeValue kMarsKioskBeepIn = 1680; +const TimeValue kMarsKioskBeepOut = 1740; + +const TimeValue kMarsBumpIntoWallIn = 1740; +const TimeValue kMarsBumpIntoWallOut = 1888; + +const TimeValue kMarsGantryDoorCloseIn = 1888; +const TimeValue kMarsGantryDoorCloseOut = 2866; + +const TimeValue kMarsTransportDoorCloseIn = 2866; +const TimeValue kMarsTransportDoorCloseOut = 3593; + +const TimeValue kMarsAirlockPressurizeIn = 3593; +const TimeValue kMarsAirlockPressurizeOut = 4766; + +const TimeValue kMarsBigAirlockDoorCloseIn = 4766; +const TimeValue kMarsBigAirlockDoorCloseOut = 7872; + +const TimeValue kMarsSmallAirlockDoorCloseIn = 7872; +const TimeValue kMarsSmallAirlockDoorCloseOut = 10000; + +const TimeValue kMarsMazeDoorCloseIn = 10000; +const TimeValue kMarsMazeDoorCloseOut = 10969; + +const TimeValue kMarsRobotTakesTransportIn = 10969; +const TimeValue kMarsRobotTakesTransportOut = 12802; + +const TimeValue kMarsPodDepartedUpperPlatformIn = 12802; +const TimeValue kMarsPodDepartedUpperPlatformOut = 15783; + +const TimeValue kMarsPodDepartedLowerPlatformIn = 15783; +const TimeValue kMarsPodDepartedLowerPlatformOut = 18736; + +const TimeValue kMarsPodArrivedUpperPlatformIn = 18736; +const TimeValue kMarsPodArrivedUpperPlatformOut = 21605; + +const TimeValue kMarsCheckInRequiredIn = 21605; +const TimeValue kMarsCheckInRequiredOut = 27463; + +const TimeValue kMarsCantOpenShuttleIn = 27463; +const TimeValue kMarsCantOpenShuttleOut = 29214; + +const TimeValue kMarsShuttleLockOverrideIn = 29214; +const TimeValue kMarsShuttleLockOverrideOut = 30330; + +const TimeValue kMarsNoShuttleIn = 30330; +const TimeValue kMarsNoShuttleOut = 31502; + +const TimeValue kMustBeUnlockedIn = 31502; +const TimeValue kMustBeUnlockedOut = 33960; + +const TimeValue kColorMatchBlueIn = 33960; +const TimeValue kColorMatchBlueOut = 34240; + +const TimeValue kColorMatchRedIn = 34240; +const TimeValue kColorMatchRedOut = 34538; + +const TimeValue kColorMatchGreenIn = 34538; +const TimeValue kColorMatchGreenOut = 34827; + +const TimeValue kColorMatchYellowIn = 34827; +const TimeValue kColorMatchYellowOut = 35162; + +const TimeValue kColorMatchPurpleIn = 35162; +const TimeValue kColorMatchPurpleOut = 35426; + +const TimeValue kColorMatchZeroNodesIn = 35426; +const TimeValue kColorMatchZeroNodesOut = 36376; + +const TimeValue kColorMatchOneNodeIn = 36376; +const TimeValue kColorMatchOneNodeOut = 37209; + +const TimeValue kColorMatchTwoNodesIn = 37209; +const TimeValue kColorMatchTwoNodesOut = 37983; + +const TimeValue kColorMatchThreeNodesIn = 37983; +const TimeValue kColorMatchThreeNodesOut = 38784; + +const TimeValue kMarsShuttle1DepartedIn = 38784; +const TimeValue kMarsShuttle1DepartedOut = 40323; + +const TimeValue kMarsShuttle2DepartedIn = 40323; +const TimeValue kMarsShuttle2DepartedOut = 41824; + +const TimeValue kShuttleCockpitIn = 41824; +const TimeValue kShuttleCockpitOut = 43126; + +const TimeValue kShuttleOnboardIn = 43126; +const TimeValue kShuttleOnboardOut = 44284; + +const TimeValue kShuttleNavigationIn = 44284; +const TimeValue kShuttleNavigationOut = 46049; + +const TimeValue kShuttleCommunicationIn = 46049; +const TimeValue kShuttleCommunicationOut = 47288; + +const TimeValue kShuttleAutoTestingIn = 47288; +const TimeValue kShuttleAutoTestingOut = 48179; + +const TimeValue kMarsThrusterAutoTestIn = 48179; +const TimeValue kMarsThrusterAutoTestOut = 49979; + +const TimeValue kShuttleAllSystemsIn = 49979; +const TimeValue kShuttleAllSystemsOut = 51065; + +const TimeValue kShuttleSecureLooseIn = 51065; +const TimeValue kShuttleSecureLooseOut = 52346; + +const TimeValue kShuttlePrepareForDropIn = 52346; +const TimeValue kShuttlePrepareForDropOut = 53216; + +const TimeValue kShuttleAllClearIn = 53216; +const TimeValue kShuttleAllClearOut = 54031; + +const TimeValue kShuttleConfiguringIn = 54031; +const TimeValue kShuttleConfiguringOut = 54994; + +const TimeValue kShuttleGeneratingIn = 54994; +const TimeValue kShuttleGeneratingOut = 56033; + +const TimeValue kShuttleBreakawayIn = 56033; +const TimeValue kShuttleBreakawayOut = 57346; + +const TimeValue kMarsAtmosphericBreakawayIn = 57346; +const TimeValue kMarsAtmosphericBreakawayOut = 59237; + +const TimeValue kMarsCockpitChatterIn = 59237; +const TimeValue kMarsCockpitChatterOut = 70344; + +const TimeValue kShuttleDamperDescIn = 70344; +const TimeValue kShuttleDamperDescOut = 73262; + +const TimeValue kShuttleGravitonDescIn = 73262; +const TimeValue kShuttleGravitonDescOut = 75296; + +const TimeValue kShuttleTractorDescIn = 75296; +const TimeValue kShuttleTractorDescOut = 78381; + +const TimeValue kShuttleTargetSightedIn = 78381; +const TimeValue kShuttleTargetSightedOut = 79074; + +const TimeValue kShuttleAutopilotEngagedIn = 79074; +const TimeValue kShuttleAutopilotEngagedOut = 80414; + +const TimeValue kMarsEDBBlastIn = 80414; +const TimeValue kMarsEDBBlastOut = 80705; + +const TimeValue kMarsGravitonBlastIn = 80705; +const TimeValue kMarsGravitonBlastOut = 81199; + +const TimeValue kMarsJunkCollisionIn = 81199; +const TimeValue kMarsJunkCollisionOut = 81961; + +const TimeValue kShuttleGravitonIn = 81961; +const TimeValue kShuttleGravitonOut = 82587; + +const TimeValue kShuttleDampingBeamIn = 82587; +const TimeValue kShuttleDampingBeamOut = 83331; + +const TimeValue kShuttleTractorBeamIn = 83331; +const TimeValue kShuttleTractorBeamOut = 83802; + +const TimeValue kShuttleHullBreachIn = 83802; +const TimeValue kShuttleHullBreachOut = 84721; + +const TimeValue kShuttleWingDamageIn = 84721; +const TimeValue kShuttleWingDamageOut = 85640; + +const TimeValue kShuttleHullDamageIn = 85640; +const TimeValue kShuttleHullDamageOut = 86513; + +const TimeValue kShuttleEnergyTooLowIn = 86513; +const TimeValue kShuttleEnergyTooLowOut = 87578; + +const TimeValue kShuttleTractorLimitedIn = 87578; +const TimeValue kShuttleTractorLimitedOut = 89164; + +const TimeValue kShuttleCantHoldIn = 89164; +const TimeValue kShuttleCantHoldOut = 90945; + +const TimeValue kShuttleBrokeFreeIn = 90945; +const TimeValue kShuttleBrokeFreeOut = 92322; + +const TimeValue kShuttleDestroyedIn = 92322; +const TimeValue kShuttleDestroyedOut = 93189; + +const TimeValue kShuttleCoordinatesIn = 93189; +const TimeValue kShuttleCoordinatesOut = 94018; + +const TimeValue kShuttleScanningIn = 94018; +const TimeValue kShuttleScanningOut = 94975; + +const TimeValue kShuttleSafeIn = 94975; +const TimeValue kShuttleSafeOut = 96176; + +const TimeValue kShuttleOverloadedIn = 96176; +const TimeValue kShuttleOverloadedOut = 101308; + +const TimeScale kMarsMovieScale = 600; +const TimeScale kMarsFramesPerSecond = 15; +const TimeScale kMarsFrameDuration = 40; + +// Alternate IDs. + +const tAlternateID kAltMarsNormal = 0; +const tAlternateID kAltMarsPodAtMars34 = 1; +const tAlternateID kAltMarsTookCard = 2; +const tAlternateID kAltMars35AirlockEast = 3; +const tAlternateID kAltMars35AirlockWest = 4; +const tAlternateID kAltMarsPodAtMars45 = 5; +const tAlternateID kAltMarsTookMask = 6; +const tAlternateID kAltMarsMaskOnFiller = 7; +const tAlternateID kAltMars60AirlockEast = 8; +const tAlternateID kAltMars60AirlockWest = 9; + +// Room IDs. + +const tRoomID kMars0A = 0; +const tRoomID kMars00 = 1; +const tRoomID kMars01 = 2; +const tRoomID kMars02 = 3; +const tRoomID kMars03 = 4; +const tRoomID kMars04 = 5; +const tRoomID kMars05 = 6; +const tRoomID kMars06 = 7; +const tRoomID kMars07 = 8; +const tRoomID kMars08 = 9; +const tRoomID kMars09 = 10; +const tRoomID kMars10 = 11; +const tRoomID kMars11 = 12; +const tRoomID kMars12 = 13; +const tRoomID kMars13 = 14; +const tRoomID kMars14 = 15; +const tRoomID kMars15 = 16; +const tRoomID kMars16 = 17; +const tRoomID kMars17 = 18; +const tRoomID kMars18 = 19; +const tRoomID kMars19 = 20; +const tRoomID kMars20 = 21; +const tRoomID kMars21 = 22; +const tRoomID kMars22 = 23; +const tRoomID kMars23 = 24; +const tRoomID kMars24 = 25; +const tRoomID kMars25 = 26; +const tRoomID kMars26 = 27; +const tRoomID kMars27 = 28; +const tRoomID kMars28 = 29; +const tRoomID kMars29 = 30; +const tRoomID kMars30 = 31; +const tRoomID kMars31 = 32; +const tRoomID kMars31South = 33; +const tRoomID kMars32 = 34; +const tRoomID kMars33 = 35; +const tRoomID kMars33North = 36; +const tRoomID kMars34 = 37; +const tRoomID kMars35 = 38; +const tRoomID kMars36 = 39; +const tRoomID kMars37 = 40; +const tRoomID kMars38 = 41; +const tRoomID kMars39 = 42; +const tRoomID kMars41 = 43; +const tRoomID kMars42 = 44; +const tRoomID kMars43 = 45; +const tRoomID kMars44 = 46; +const tRoomID kMars45 = 47; +const tRoomID kMars46 = 48; +const tRoomID kMars47 = 49; +const tRoomID kMars48 = 50; +const tRoomID kMars49 = 51; +const tRoomID kMars50 = 52; +const tRoomID kMars51 = 53; +const tRoomID kMars52 = 54; +const tRoomID kMars54 = 55; +const tRoomID kMars56 = 56; +const tRoomID kMars58 = 57; +const tRoomID kMars60 = 58; +const tRoomID kMarsRobotShuttle = 59; +const tRoomID kMarsMaze004 = 60; +const tRoomID kMarsMaze005 = 61; +const tRoomID kMarsMaze006 = 62; +const tRoomID kMarsMaze007 = 63; +const tRoomID kMarsMaze008 = 64; +const tRoomID kMarsMaze009 = 65; +const tRoomID kMarsMaze010 = 66; +const tRoomID kMarsMaze011 = 67; +const tRoomID kMarsMaze012 = 68; +const tRoomID kMarsMaze015 = 69; +const tRoomID kMarsMaze016 = 70; +const tRoomID kMarsMaze017 = 71; +const tRoomID kMarsMaze018 = 72; +const tRoomID kMarsMaze019 = 73; +const tRoomID kMarsMaze020 = 74; +const tRoomID kMarsMaze021 = 75; +const tRoomID kMarsMaze022 = 76; +const tRoomID kMarsMaze023 = 77; +const tRoomID kMarsMaze024 = 78; +const tRoomID kMarsMaze025 = 79; +const tRoomID kMarsMaze026 = 80; +const tRoomID kMarsMaze027 = 81; +const tRoomID kMarsMaze028 = 82; +const tRoomID kMarsMaze031 = 83; +const tRoomID kMarsMaze032 = 84; +const tRoomID kMarsMaze033 = 85; +const tRoomID kMarsMaze034 = 86; +const tRoomID kMarsMaze035 = 87; +const tRoomID kMarsMaze036 = 88; +const tRoomID kMarsMaze037 = 89; +const tRoomID kMarsMaze038 = 90; +const tRoomID kMarsMaze039 = 91; +const tRoomID kMarsMaze042 = 92; +const tRoomID kMarsMaze043 = 93; +const tRoomID kMarsMaze044 = 94; +const tRoomID kMarsMaze045 = 95; +const tRoomID kMarsMaze046 = 96; +const tRoomID kMarsMaze047 = 97; +const tRoomID kMarsMaze049 = 98; +const tRoomID kMarsMaze050 = 99; +const tRoomID kMarsMaze051 = 100; +const tRoomID kMarsMaze052 = 101; +const tRoomID kMarsMaze053 = 102; +const tRoomID kMarsMaze054 = 103; +const tRoomID kMarsMaze055 = 104; +const tRoomID kMarsMaze056 = 105; +const tRoomID kMarsMaze057 = 106; +const tRoomID kMarsMaze058 = 107; +const tRoomID kMarsMaze059 = 108; +const tRoomID kMarsMaze060 = 109; +const tRoomID kMarsMaze061 = 110; +const tRoomID kMarsMaze063 = 111; +const tRoomID kMarsMaze064 = 112; +const tRoomID kMarsMaze065 = 113; +const tRoomID kMarsMaze066 = 114; +const tRoomID kMarsMaze067 = 115; +const tRoomID kMarsMaze068 = 116; +const tRoomID kMarsMaze069 = 117; +const tRoomID kMarsMaze070 = 118; +const tRoomID kMarsMaze071 = 119; +const tRoomID kMarsMaze072 = 120; +const tRoomID kMarsMaze074 = 121; +const tRoomID kMarsMaze076 = 122; +const tRoomID kMarsMaze078 = 123; +const tRoomID kMarsMaze079 = 124; +const tRoomID kMarsMaze081 = 125; +const tRoomID kMarsMaze083 = 126; +const tRoomID kMarsMaze084 = 127; +const tRoomID kMarsMaze085 = 128; +const tRoomID kMarsMaze086 = 129; +const tRoomID kMarsMaze087 = 130; +const tRoomID kMarsMaze088 = 131; +const tRoomID kMarsMaze089 = 132; +const tRoomID kMarsMaze090 = 133; +const tRoomID kMarsMaze091 = 134; +const tRoomID kMarsMaze092 = 135; +const tRoomID kMarsMaze093 = 136; +const tRoomID kMarsMaze098 = 137; +const tRoomID kMarsMaze099 = 138; +const tRoomID kMarsMaze100 = 139; +const tRoomID kMarsMaze101 = 140; +const tRoomID kMarsMaze104 = 141; +const tRoomID kMarsMaze105 = 142; +const tRoomID kMarsMaze106 = 143; +const tRoomID kMarsMaze107 = 144; +const tRoomID kMarsMaze108 = 145; +const tRoomID kMarsMaze111 = 146; +const tRoomID kMarsMaze113 = 147; +const tRoomID kMarsMaze114 = 148; +const tRoomID kMarsMaze115 = 149; +const tRoomID kMarsMaze116 = 150; +const tRoomID kMarsMaze117 = 151; +const tRoomID kMarsMaze118 = 152; +const tRoomID kMarsMaze119 = 153; +const tRoomID kMarsMaze120 = 154; +const tRoomID kMarsMaze121 = 155; +const tRoomID kMarsMaze122 = 156; +const tRoomID kMarsMaze123 = 157; +const tRoomID kMarsMaze124 = 158; +const tRoomID kMarsMaze125 = 159; +const tRoomID kMarsMaze126 = 160; +const tRoomID kMarsMaze127 = 161; +const tRoomID kMarsMaze128 = 162; +const tRoomID kMarsMaze129 = 163; +const tRoomID kMarsMaze130 = 164; +const tRoomID kMarsMaze131 = 165; +const tRoomID kMarsMaze132 = 166; +const tRoomID kMarsMaze133 = 167; +const tRoomID kMarsMaze136 = 168; +const tRoomID kMarsMaze137 = 169; +const tRoomID kMarsMaze138 = 170; +const tRoomID kMarsMaze139 = 171; +const tRoomID kMarsMaze140 = 172; +const tRoomID kMarsMaze141 = 173; +const tRoomID kMarsMaze142 = 174; +const tRoomID kMarsMaze143 = 175; +const tRoomID kMarsMaze144 = 176; +const tRoomID kMarsMaze145 = 177; +const tRoomID kMarsMaze146 = 178; +const tRoomID kMarsMaze147 = 179; +const tRoomID kMarsMaze148 = 180; +const tRoomID kMarsMaze149 = 181; +const tRoomID kMarsMaze152 = 182; +const tRoomID kMarsMaze153 = 183; +const tRoomID kMarsMaze154 = 184; +const tRoomID kMarsMaze155 = 185; +const tRoomID kMarsMaze156 = 186; +const tRoomID kMarsMaze157 = 187; +const tRoomID kMarsMaze159 = 188; +const tRoomID kMarsMaze160 = 189; +const tRoomID kMarsMaze161 = 190; +const tRoomID kMarsMaze162 = 191; +const tRoomID kMarsMaze163 = 192; +const tRoomID kMarsMaze164 = 193; +const tRoomID kMarsMaze165 = 194; +const tRoomID kMarsMaze166 = 195; +const tRoomID kMarsMaze167 = 196; +const tRoomID kMarsMaze168 = 197; +const tRoomID kMarsMaze169 = 198; +const tRoomID kMarsMaze170 = 199; +const tRoomID kMarsMaze171 = 200; +const tRoomID kMarsMaze172 = 201; +const tRoomID kMarsMaze173 = 202; +const tRoomID kMarsMaze174 = 203; +const tRoomID kMarsMaze175 = 204; +const tRoomID kMarsMaze177 = 205; +const tRoomID kMarsMaze178 = 206; +const tRoomID kMarsMaze179 = 207; +const tRoomID kMarsMaze180 = 208; +const tRoomID kMarsMaze181 = 209; +const tRoomID kMarsMaze182 = 210; +const tRoomID kMarsMaze183 = 211; +const tRoomID kMarsMaze184 = 212; +const tRoomID kMarsMaze187 = 213; +const tRoomID kMarsMaze188 = 214; +const tRoomID kMarsMaze189 = 215; +const tRoomID kMarsMaze190 = 216; +const tRoomID kMarsMaze191 = 217; +const tRoomID kMarsMaze192 = 218; +const tRoomID kMarsMaze193 = 219; +const tRoomID kMarsMaze194 = 220; +const tRoomID kMarsMaze195 = 221; +const tRoomID kMarsMaze198 = 222; +const tRoomID kMarsMaze199 = 223; +const tRoomID kMarsMaze200 = 224; +const tRoomID kMarsDeathRoom = 225; + +// Hot Spot Activation IDs. + +const tHotSpotActivationID kActivationReadyForKiosk = 1; +const tHotSpotActivationID kActivationKioskChoice = 2; +const tHotSpotActivationID kActivationTunnelMapReady = 3; +const tHotSpotActivationID kActivateMarsPodClosed = 4; +const tHotSpotActivationID kActivateMarsPodOpen = 5; +const tHotSpotActivationID kActivateReadyToPressurizeAirlock = 6; +const tHotSpotActivationID kActivateAirlockPressurized = 7; +const tHotSpotActivationID kActivateMaskOnHolder = 8; +const tHotSpotActivationID kActivateMaskOnFiller = 9; +const tHotSpotActivationID kActivateReactorPlatformOut = 10; +const tHotSpotActivationID kActivateReactorPlatformIn = 11; +const tHotSpotActivationID kActivateReactorAskLowerScreen = 12; +const tHotSpotActivationID kActivateReactorReadyForNitrogen = 13; +const tHotSpotActivationID kActivateReactorReadyForCrowBar = 14; +const tHotSpotActivationID kActivateReactorAskOperation = 15; +const tHotSpotActivationID kActivateReactorRanEvaluation = 16; +const tHotSpotActivationID kActivateReactorRanDiagnostics = 17; +const tHotSpotActivationID kActivateReactorAnalyzed = 18; +const tHotSpotActivationID kActivateReactorInstructions = 19; +const tHotSpotActivationID kActivateReactorInGame = 20; +const tHotSpotActivationID kActivateReactorBombSafe = 21; +const tHotSpotActivationID kActivateReactorBombExposed = 22; +const tHotSpotActivationID kActivationRobotHeadClosed = 23; +const tHotSpotActivationID kActivationRobotHeadOpen = 24; + +// Hot Spot IDs. + +const tHotSpotID kMars11NorthKioskSpotID = 5000; +const tHotSpotID kMars11NorthKioskSightsSpotID = 5001; +const tHotSpotID kMars11NorthKioskColonySpotID = 5002; +const tHotSpotID kMars12NorthKioskSpotID = 5003; +const tHotSpotID kMars12NorthKioskSightsSpotID = 5004; +const tHotSpotID kMars12NorthKioskColonySpotID = 5005; +const tHotSpotID kMars31SouthSpotID = 5006; +const tHotSpotID kMars31SouthOutSpotID = 5007; +const tHotSpotID kMars31SouthCardSpotID = 5008; +const tHotSpotID kMars33NorthSpotID = 5009; +const tHotSpotID kMars33NorthOutSpotID = 5010; +const tHotSpotID kMars33NorthMonitorSpotID = 5011; +const tHotSpotID kMars34NorthCardDropSpotID = 5012; +const tHotSpotID kMars34SouthOpenStorageSpotID = 5013; +const tHotSpotID kMars34SouthCloseStorageSpotID = 5014; +const tHotSpotID kMars34SouthCrowbarSpotID = 5015; +const tHotSpotID kMars35EastPressurizeSpotID = 5016; +const tHotSpotID kMars35EastSpinSpotID = 5017; +const tHotSpotID kMars35WestPressurizeSpotID = 5018; +const tHotSpotID kMars35WestSpinSpotID = 5019; +const tHotSpotID kMars45NorthOpenStorageSpotID = 5020; +const tHotSpotID kMars45NorthCloseStorageSpotID = 5021; +const tHotSpotID kMars45NorthCrowbarSpotID = 5022; +const tHotSpotID kAttackRobotHotSpotID = 5023; +const tHotSpotID kMars49AirMaskSpotID = 5024; +const tHotSpotID kMars49AirMaskFilledSpotID = 5025; +const tHotSpotID kMars49AirFillingDropSpotID = 5026; +const tHotSpotID kMars52MoveLeftSpotID = 5027; +const tHotSpotID kMars52MoveRightSpotID = 5028; +const tHotSpotID kMars52ExtractSpotID = 5029; +const tHotSpotID kMars53RetractSpotID = 5030; +const tHotSpotID kMars54MoveLeftSpotID = 5031; +const tHotSpotID kMars54MoveRightSpotID = 5032; +const tHotSpotID kMars54ExtractSpotID = 5033; +const tHotSpotID kMars55RetractSpotID = 5034; +const tHotSpotID kMars56MoveLeftSpotID = 5035; +const tHotSpotID kMars56MoveRightSpotID = 5036; +const tHotSpotID kMars56ExtractSpotID = 5037; +const tHotSpotID kMars57RetractSpotID = 5038; +const tHotSpotID kMars57LowerScreenSpotID = 5039; +const tHotSpotID kMars57Retract2SpotID = 5040; +const tHotSpotID kMars57DropNitrogenSpotID = 5041; +const tHotSpotID kMars57DropCrowBarSpotID = 5042; +const tHotSpotID kMars57CantOpenPanelSpotID = 5043; +const tHotSpotID kMars57ShieldEvaluationSpotID = 5044; +const tHotSpotID kMars57MeasureOutputSpotID = 5045; +const tHotSpotID kMars57RunDiagnosticsSpotID = 5046; +const tHotSpotID kMars57BackToOperationMenuSpotID = 5047; +const tHotSpotID kMars57AnalyzeObjectSpotID = 5048; +const tHotSpotID kMars57RemoveObjectMenuSpotID = 5049; +const tHotSpotID kMars57CircuitLinkSpotID = 5050; +const tHotSpotID kMars57CancelCircuitLinkSpotID = 5051; +const tHotSpotID kMars57GameInstructionsSpotID = 5052; +const tHotSpotID kMars57UndoMoveSpotID = 5053; +const tHotSpotID kMars57RedMoveSpotID = 5054; +const tHotSpotID kMars57YellowMoveSpotID = 5055; +const tHotSpotID kMars57GreenMoveSpotID = 5056; +const tHotSpotID kMars57BlueMoveSpotID = 5057; +const tHotSpotID kMars57PurpleMoveSpotID = 5058; +const tHotSpotID kMars57LowerScreenSafelySpotID = 5059; +const tHotSpotID kMars57GrabBombSpotID = 5060; +const tHotSpotID kMars58MoveLeftSpotID = 5061; +const tHotSpotID kMars58MoveRightSpotID = 5062; +const tHotSpotID kMars58ExtractSpotID = 5063; +const tHotSpotID kMars59RetractSpotID = 5064; +const tHotSpotID kMars60EastPressurizeSpotID = 5065; +const tHotSpotID kMars60EastSpinSpotID = 5066; +const tHotSpotID kMars60WestPressurizeSpotID = 5067; +const tHotSpotID kMars60WestSpinSpotID = 5068; +const tHotSpotID kRobotShuttleOpenHeadSpotID = 5069; +const tHotSpotID kRobotShuttleMapChipSpotID = 5070; +const tHotSpotID kRobotShuttleOpticalChipSpotID = 5071; +const tHotSpotID kRobotShuttleShieldChipSpotID = 5072; + +// Extra sequence IDs. + +const tExtraID kMarsArrivalFromTSA = 0; +const tExtraID kMars0AWatchShuttleDepart = 1; +const tExtraID kRobotThrowsPlayer = 2; +const tExtraID kMarsInfoKioskIntro = 3; +const tExtraID kMarsColonyInfo = 4; +const tExtraID kMarsSightsInfo = 5; +const tExtraID kRobotOnWayToShuttle = 6; +const tExtraID kMars31SouthZoomInNoCard = 7; +const tExtraID kMars31SouthViewNoCard = 8; +const tExtraID kMars31SouthZoomOutNoCard = 9; +const tExtraID kMars31SouthZoomViewNoCard = 10; +const tExtraID kMars33SlideShow1 = 11; +const tExtraID kMars33SlideShow2 = 12; +const tExtraID kMars33SlideShow3 = 13; +const tExtraID kMars33SlideShow4 = 14; +const tExtraID kMars34SpotOpenWithBar = 15; +const tExtraID kMars34SpotCloseWithBar = 16; +const tExtraID kMars34SpotOpenNoBar = 17; +const tExtraID kMars34SpotCloseNoBar = 18; +const tExtraID kMars34ViewOpenWithBar = 19; +const tExtraID kMars34ViewOpenNoBar = 20; +const tExtraID kMars34NorthPodGreeting = 21; +const tExtraID kMarsTurnOnPod = 22; +const tExtraID kMarsTakePodToMars45 = 23; +const tExtraID kMars35WestSpinAirlockToEast = 24; +const tExtraID kMars35EastSpinAirlockToWest = 25; +const tExtraID kMars45SpotOpenWithBar = 26; +const tExtraID kMars45SpotCloseWithBar = 27; +const tExtraID kMars45SpotOpenNoBar = 28; +const tExtraID kMars45SpotCloseNoBar = 29; +const tExtraID kMars45ViewOpenWithBar = 30; +const tExtraID kMars45ViewOpenNoBar = 31; +const tExtraID kMars48RobotApproaches = 32; +const tExtraID kMars48RobotKillsPlayer = 33; +const tExtraID kMars48RobotLoops = 34; +const tExtraID kMars48RobotView = 35; +const tExtraID kMars48RobotDefends = 36; +const tExtraID kMars49SouthViewMaskFilling = 37; +const tExtraID kMars52SpinLeft = 38; +const tExtraID kMars52SpinRight = 39; +const tExtraID kMars52Extend = 40; +const tExtraID kMars53Retract = 41; +const tExtraID kMars54SpinLeft = 42; +const tExtraID kMars54SpinRight = 43; +const tExtraID kMars54Extend = 44; +const tExtraID kMars55Retract = 45; +const tExtraID kMars56SpinLeft = 46; +const tExtraID kMars56SpinRight = 47; +const tExtraID kMars56ExtendWithBomb = 48; +const tExtraID kMars56ExtendNoBomb = 49; +const tExtraID kMars57RetractWithBomb = 50; +const tExtraID kMars57RetractNoBomb = 51; +const tExtraID kMars57LowerScreenClosed = 52; +const tExtraID kMars57CantOpenPanel = 53; +const tExtraID kMars57FreezeLock = 54; +const tExtraID kMars57BreakLock = 55; +const tExtraID kMars57LockFrozenView = 56; +const tExtraID kMars57ThawLock = 57; +const tExtraID kMars57OpenPanel = 58; +const tExtraID kMars57OpenPanelChoices = 59; +const tExtraID kMars57ShieldEvaluation = 60; +const tExtraID kMars57MeasureOutput = 61; +const tExtraID kMars57ShieldOkayLoop = 62; +const tExtraID kMars57RunDiagnostics = 63; +const tExtraID kMars57BombExplodes = 64; +const tExtraID kMars57BombAnalysis = 65; +const tExtraID kMars57DontLink = 66; +const tExtraID kMars57CircuitLink = 67; +const tExtraID kMars57GameLevel1 = 68; +const tExtraID kMars57GameLevel2 = 69; +const tExtraID kMars57GameLevel3 = 70; +const tExtraID kMars57BombExplodesInGame = 71; +const tExtraID kMars57GameSolved = 72; +const tExtraID kMars57ExposeBomb = 73; +const tExtraID kMars57BackToNormal = 74; +const tExtraID kMars57ViewOpenNoBomb = 75; +const tExtraID kMars58SpinLeft = 76; +const tExtraID kMars58SpinRight = 77; +const tExtraID kMars58Extend = 78; +const tExtraID kMars59Retract = 79; +const tExtraID kMars60WestSpinAirlockToEast = 80; +const tExtraID kMars60EastSpinAirlockToWest = 81; +const tExtraID kMarsRobotHeadOpen = 82; +const tExtraID kMarsRobotHeadClose = 83; +const tExtraID kMarsRobotHead000 = 84; +const tExtraID kMarsRobotHead001 = 85; +const tExtraID kMarsRobotHead010 = 86; +const tExtraID kMarsRobotHead011 = 87; +const tExtraID kMarsRobotHead100 = 88; +const tExtraID kMarsRobotHead101 = 89; +const tExtraID kMarsRobotHead110 = 90; +const tExtraID kMarsRobotHead111 = 91; +const tExtraID kMarsMaze007RobotApproach = 92; +const tExtraID kMarsMaze007RobotLoop = 93; +const tExtraID kMarsMaze007RobotDeath = 94; +const tExtraID kMarsMaze015SouthRobotApproach = 95; +const tExtraID kMarsMaze015SouthRobotLoop = 96; +const tExtraID kMarsMaze015SouthRobotDeath = 97; +const tExtraID kMarsMaze101EastRobotApproach = 98; +const tExtraID kMarsMaze101EastRobotLoop = 99; +const tExtraID kMarsMaze101EastRobotDeath = 100; +const tExtraID kMarsMaze104WestLoop = 101; +const tExtraID kMarsMaze104WestDeath = 102; +const tExtraID kMarsMaze133SouthApproach = 103; +const tExtraID kMarsMaze133SouthLoop = 104; +const tExtraID kMarsMaze133SouthDeath = 105; +const tExtraID kMarsMaze136NorthApproach = 106; +const tExtraID kMarsMaze136NorthLoop = 107; +const tExtraID kMarsMaze136NorthDeath = 108; +const tExtraID kMarsMaze184WestLoop = 109; +const tExtraID kMarsMaze184WestDeath = 110; +const tExtraID kMars200DeathInBucket = 111; + +const tResIDType kReactorUndoHilitePICTID = 900; + +const int16 kMars52Compass = 90; +const int16 kMars54Compass = 180; +const int16 kMars56Compass = 270; +const int16 kMars58Compass = 0; + +} // End of namespace Pegasus + +#endif diff --git a/engines/pegasus/neighborhood/mars/gravitoncannon.h b/engines/pegasus/neighborhood/mars/gravitoncannon.h index 1919c0300097..b94fd55e5bbe 100755 --- a/engines/pegasus/neighborhood/mars/gravitoncannon.h +++ b/engines/pegasus/neighborhood/mars/gravitoncannon.h @@ -26,11 +26,13 @@ #ifndef PEGASUS_NEIGHBORHOOD_MARS_GRAVITONCANNON_H #define PEGASUS_NEIGHBORHOOD_MARS_GRAVITONCANNON_H +#include "pegasus/surface.h" #include "pegasus/neighborhood/mars/shuttleweapon.h" namespace Pegasus { class GravitonCannon : public ShuttleWeapon { +public: GravitonCannon(); virtual ~GravitonCannon() {} diff --git a/engines/pegasus/neighborhood/mars/mars.cpp b/engines/pegasus/neighborhood/mars/mars.cpp index b6b9211554f9..5c366383b42c 100755 --- a/engines/pegasus/neighborhood/mars/mars.cpp +++ b/engines/pegasus/neighborhood/mars/mars.cpp @@ -38,675 +38,6 @@ namespace Pegasus { -const TimeValue kMarsOxyMaskOnIn = 0; -const TimeValue kMarsOxyMaskOnOut = 1560; - -const TimeValue kMarsAirlockButtonBeepIn = 1560; -const TimeValue kMarsAirlockButtonBeepOut = 1620; - -const TimeValue kMarsColorMatchingButtonBeepIn = 1620; -const TimeValue kMarsColorMatchingButtonBeepOut = 1680; - -const TimeValue kMarsKioskBeepIn = 1680; -const TimeValue kMarsKioskBeepOut = 1740; - -const TimeValue kMarsBumpIntoWallIn = 1740; -const TimeValue kMarsBumpIntoWallOut = 1888; - -const TimeValue kMarsGantryDoorCloseIn = 1888; -const TimeValue kMarsGantryDoorCloseOut = 2866; - -const TimeValue kMarsTransportDoorCloseIn = 2866; -const TimeValue kMarsTransportDoorCloseOut = 3593; - -const TimeValue kMarsAirlockPressurizeIn = 3593; -const TimeValue kMarsAirlockPressurizeOut = 4766; - -const TimeValue kMarsBigAirlockDoorCloseIn = 4766; -const TimeValue kMarsBigAirlockDoorCloseOut = 7872; - -const TimeValue kMarsSmallAirlockDoorCloseIn = 7872; -const TimeValue kMarsSmallAirlockDoorCloseOut = 10000; - -const TimeValue kMarsMazeDoorCloseIn = 10000; -const TimeValue kMarsMazeDoorCloseOut = 10969; - -const TimeValue kMarsRobotTakesTransportIn = 10969; -const TimeValue kMarsRobotTakesTransportOut = 12802; - -const TimeValue kMarsPodDepartedUpperPlatformIn = 12802; -const TimeValue kMarsPodDepartedUpperPlatformOut = 15783; - -const TimeValue kMarsPodDepartedLowerPlatformIn = 15783; -const TimeValue kMarsPodDepartedLowerPlatformOut = 18736; - -const TimeValue kMarsPodArrivedUpperPlatformIn = 18736; -const TimeValue kMarsPodArrivedUpperPlatformOut = 21605; - -const TimeValue kMarsCheckInRequiredIn = 21605; -const TimeValue kMarsCheckInRequiredOut = 27463; - -const TimeValue kMarsCantOpenShuttleIn = 27463; -const TimeValue kMarsCantOpenShuttleOut = 29214; - -const TimeValue kMarsShuttleLockOverrideIn = 29214; -const TimeValue kMarsShuttleLockOverrideOut = 30330; - -const TimeValue kMarsNoShuttleIn = 30330; -const TimeValue kMarsNoShuttleOut = 31502; - -const TimeValue kMustBeUnlockedIn = 31502; -const TimeValue kMustBeUnlockedOut = 33960; - -const TimeValue kColorMatchBlueIn = 33960; -const TimeValue kColorMatchBlueOut = 34240; - -const TimeValue kColorMatchRedIn = 34240; -const TimeValue kColorMatchRedOut = 34538; - -const TimeValue kColorMatchGreenIn = 34538; -const TimeValue kColorMatchGreenOut = 34827; - -const TimeValue kColorMatchYellowIn = 34827; -const TimeValue kColorMatchYellowOut = 35162; - -const TimeValue kColorMatchPurpleIn = 35162; -const TimeValue kColorMatchPurpleOut = 35426; - -const TimeValue kColorMatchZeroNodesIn = 35426; -const TimeValue kColorMatchZeroNodesOut = 36376; - -const TimeValue kColorMatchOneNodeIn = 36376; -const TimeValue kColorMatchOneNodeOut = 37209; - -const TimeValue kColorMatchTwoNodesIn = 37209; -const TimeValue kColorMatchTwoNodesOut = 37983; - -const TimeValue kColorMatchThreeNodesIn = 37983; -const TimeValue kColorMatchThreeNodesOut = 38784; - -const TimeValue kMarsShuttle1DepartedIn = 38784; -const TimeValue kMarsShuttle1DepartedOut = 40323; - -const TimeValue kMarsShuttle2DepartedIn = 40323; -const TimeValue kMarsShuttle2DepartedOut = 41824; - -const TimeValue kShuttleCockpitIn = 41824; -const TimeValue kShuttleCockpitOut = 43126; - -const TimeValue kShuttleOnboardIn = 43126; -const TimeValue kShuttleOnboardOut = 44284; - -const TimeValue kShuttleNavigationIn = 44284; -const TimeValue kShuttleNavigationOut = 46049; - -const TimeValue kShuttleCommunicationIn = 46049; -const TimeValue kShuttleCommunicationOut = 47288; - -const TimeValue kShuttleAutoTestingIn = 47288; -const TimeValue kShuttleAutoTestingOut = 48179; - -const TimeValue kMarsThrusterAutoTestIn = 48179; -const TimeValue kMarsThrusterAutoTestOut = 49979; - -const TimeValue kShuttleAllSystemsIn = 49979; -const TimeValue kShuttleAllSystemsOut = 51065; - -const TimeValue kShuttleSecureLooseIn = 51065; -const TimeValue kShuttleSecureLooseOut = 52346; - -const TimeValue kShuttlePrepareForDropIn = 52346; -const TimeValue kShuttlePrepareForDropOut = 53216; - -const TimeValue kShuttleAllClearIn = 53216; -const TimeValue kShuttleAllClearOut = 54031; - -const TimeValue kShuttleConfiguringIn = 54031; -const TimeValue kShuttleConfiguringOut = 54994; - -const TimeValue kShuttleGeneratingIn = 54994; -const TimeValue kShuttleGeneratingOut = 56033; - -const TimeValue kShuttleBreakawayIn = 56033; -const TimeValue kShuttleBreakawayOut = 57346; - -const TimeValue kMarsAtmosphericBreakawayIn = 57346; -const TimeValue kMarsAtmosphericBreakawayOut = 59237; - -const TimeValue kMarsCockpitChatterIn = 59237; -const TimeValue kMarsCockpitChatterOut = 70344; - -const TimeValue kShuttleDamperDescIn = 70344; -const TimeValue kShuttleDamperDescOut = 73262; - -const TimeValue kShuttleGravitonDescIn = 73262; -const TimeValue kShuttleGravitonDescOut = 75296; - -const TimeValue kShuttleTractorDescIn = 75296; -const TimeValue kShuttleTractorDescOut = 78381; - -const TimeValue kShuttleTargetSightedIn = 78381; -const TimeValue kShuttleTargetSightedOut = 79074; - -const TimeValue kShuttleAutopilotEngagedIn = 79074; -const TimeValue kShuttleAutopilotEngagedOut = 80414; - -const TimeValue kMarsEDBBlastIn = 80414; -const TimeValue kMarsEDBBlastOut = 80705; - -const TimeValue kMarsGravitonBlastIn = 80705; -const TimeValue kMarsGravitonBlastOut = 81199; - -const TimeValue kMarsJunkCollisionIn = 81199; -const TimeValue kMarsJunkCollisionOut = 81961; - -const TimeValue kShuttleGravitonIn = 81961; -const TimeValue kShuttleGravitonOut = 82587; - -const TimeValue kShuttleDampingBeamIn = 82587; -const TimeValue kShuttleDampingBeamOut = 83331; - -const TimeValue kShuttleTractorBeamIn = 83331; -const TimeValue kShuttleTractorBeamOut = 83802; - -const TimeValue kShuttleHullBreachIn = 83802; -const TimeValue kShuttleHullBreachOut = 84721; - -const TimeValue kShuttleWingDamageIn = 84721; -const TimeValue kShuttleWingDamageOut = 85640; - -const TimeValue kShuttleHullDamageIn = 85640; -const TimeValue kShuttleHullDamageOut = 86513; - -const TimeValue kShuttleEnergyTooLowIn = 86513; -const TimeValue kShuttleEnergyTooLowOut = 87578; - -const TimeValue kShuttleTractorLimitedIn = 87578; -const TimeValue kShuttleTractorLimitedOut = 89164; - -const TimeValue kShuttleCantHoldIn = 89164; -const TimeValue kShuttleCantHoldOut = 90945; - -const TimeValue kShuttleBrokeFreeIn = 90945; -const TimeValue kShuttleBrokeFreeOut = 92322; - -const TimeValue kShuttleDestroyedIn = 92322; -const TimeValue kShuttleDestroyedOut = 93189; - -const TimeValue kShuttleCoordinatesIn = 93189; -const TimeValue kShuttleCoordinatesOut = 94018; - -const TimeValue kShuttleScanningIn = 94018; -const TimeValue kShuttleScanningOut = 94975; - -const TimeValue kShuttleSafeIn = 94975; -const TimeValue kShuttleSafeOut = 96176; - -const TimeValue kShuttleOverloadedIn = 96176; -const TimeValue kShuttleOverloadedOut = 101308; - -const TimeScale kMarsMovieScale = 600; -const TimeScale kMarsFramesPerSecond = 15; -const TimeScale kMarsFrameDuration = 40; - -// Alternate IDs. - -const tAlternateID kAltMarsNormal = 0; -const tAlternateID kAltMarsPodAtMars34 = 1; -const tAlternateID kAltMarsTookCard = 2; -const tAlternateID kAltMars35AirlockEast = 3; -const tAlternateID kAltMars35AirlockWest = 4; -const tAlternateID kAltMarsPodAtMars45 = 5; -const tAlternateID kAltMarsTookMask = 6; -const tAlternateID kAltMarsMaskOnFiller = 7; -const tAlternateID kAltMars60AirlockEast = 8; -const tAlternateID kAltMars60AirlockWest = 9; - -// Room IDs. - -const tRoomID kMars00 = 1; -const tRoomID kMars01 = 2; -const tRoomID kMars02 = 3; -const tRoomID kMars03 = 4; -const tRoomID kMars04 = 5; -const tRoomID kMars05 = 6; -const tRoomID kMars06 = 7; -const tRoomID kMars07 = 8; -const tRoomID kMars08 = 9; -const tRoomID kMars09 = 10; -const tRoomID kMars10 = 11; -const tRoomID kMars11 = 12; -const tRoomID kMars12 = 13; -const tRoomID kMars13 = 14; -const tRoomID kMars14 = 15; -const tRoomID kMars15 = 16; -const tRoomID kMars16 = 17; -const tRoomID kMars17 = 18; -const tRoomID kMars18 = 19; -const tRoomID kMars19 = 20; -const tRoomID kMars20 = 21; -const tRoomID kMars21 = 22; -const tRoomID kMars22 = 23; -const tRoomID kMars23 = 24; -const tRoomID kMars24 = 25; -const tRoomID kMars25 = 26; -const tRoomID kMars26 = 27; -const tRoomID kMars27 = 28; -const tRoomID kMars28 = 29; -const tRoomID kMars29 = 30; -const tRoomID kMars30 = 31; -const tRoomID kMars31 = 32; -const tRoomID kMars32 = 34; -const tRoomID kMars33 = 35; -const tRoomID kMars33North = 36; -const tRoomID kMars36 = 39; -const tRoomID kMars37 = 40; -const tRoomID kMars38 = 41; -const tRoomID kMars41 = 43; -const tRoomID kMars42 = 44; -const tRoomID kMars43 = 45; -const tRoomID kMars44 = 46; -const tRoomID kMars45 = 47; -const tRoomID kMars46 = 48; -const tRoomID kMars47 = 49; -const tRoomID kMars48 = 50; -const tRoomID kMars50 = 52; -const tRoomID kMars51 = 53; -const tRoomID kMars52 = 54; -const tRoomID kMars54 = 55; -const tRoomID kMars56 = 56; -const tRoomID kMars58 = 57; -const tRoomID kMarsRobotShuttle = 59; -const tRoomID kMarsMaze005 = 61; -const tRoomID kMarsMaze006 = 62; -const tRoomID kMarsMaze007 = 63; -const tRoomID kMarsMaze008 = 64; -const tRoomID kMarsMaze009 = 65; -const tRoomID kMarsMaze010 = 66; -const tRoomID kMarsMaze011 = 67; -const tRoomID kMarsMaze012 = 68; -const tRoomID kMarsMaze015 = 69; -const tRoomID kMarsMaze016 = 70; -const tRoomID kMarsMaze017 = 71; -const tRoomID kMarsMaze018 = 72; -const tRoomID kMarsMaze019 = 73; -const tRoomID kMarsMaze020 = 74; -const tRoomID kMarsMaze021 = 75; -const tRoomID kMarsMaze022 = 76; -const tRoomID kMarsMaze023 = 77; -const tRoomID kMarsMaze024 = 78; -const tRoomID kMarsMaze025 = 79; -const tRoomID kMarsMaze026 = 80; -const tRoomID kMarsMaze027 = 81; -const tRoomID kMarsMaze028 = 82; -const tRoomID kMarsMaze031 = 83; -const tRoomID kMarsMaze032 = 84; -const tRoomID kMarsMaze033 = 85; -const tRoomID kMarsMaze034 = 86; -const tRoomID kMarsMaze035 = 87; -const tRoomID kMarsMaze036 = 88; -const tRoomID kMarsMaze037 = 89; -const tRoomID kMarsMaze038 = 90; -const tRoomID kMarsMaze039 = 91; -const tRoomID kMarsMaze042 = 92; -const tRoomID kMarsMaze043 = 93; -const tRoomID kMarsMaze044 = 94; -const tRoomID kMarsMaze045 = 95; -const tRoomID kMarsMaze046 = 96; -const tRoomID kMarsMaze047 = 97; -const tRoomID kMarsMaze049 = 98; -const tRoomID kMarsMaze050 = 99; -const tRoomID kMarsMaze051 = 100; -const tRoomID kMarsMaze052 = 101; -const tRoomID kMarsMaze053 = 102; -const tRoomID kMarsMaze054 = 103; -const tRoomID kMarsMaze055 = 104; -const tRoomID kMarsMaze056 = 105; -const tRoomID kMarsMaze057 = 106; -const tRoomID kMarsMaze058 = 107; -const tRoomID kMarsMaze059 = 108; -const tRoomID kMarsMaze060 = 109; -const tRoomID kMarsMaze061 = 110; -const tRoomID kMarsMaze063 = 111; -const tRoomID kMarsMaze064 = 112; -const tRoomID kMarsMaze065 = 113; -const tRoomID kMarsMaze066 = 114; -const tRoomID kMarsMaze067 = 115; -const tRoomID kMarsMaze068 = 116; -const tRoomID kMarsMaze069 = 117; -const tRoomID kMarsMaze070 = 118; -const tRoomID kMarsMaze071 = 119; -const tRoomID kMarsMaze072 = 120; -const tRoomID kMarsMaze074 = 121; -const tRoomID kMarsMaze076 = 122; -const tRoomID kMarsMaze078 = 123; -const tRoomID kMarsMaze079 = 124; -const tRoomID kMarsMaze081 = 125; -const tRoomID kMarsMaze083 = 126; -const tRoomID kMarsMaze084 = 127; -const tRoomID kMarsMaze085 = 128; -const tRoomID kMarsMaze086 = 129; -const tRoomID kMarsMaze087 = 130; -const tRoomID kMarsMaze088 = 131; -const tRoomID kMarsMaze089 = 132; -const tRoomID kMarsMaze090 = 133; -const tRoomID kMarsMaze091 = 134; -const tRoomID kMarsMaze092 = 135; -const tRoomID kMarsMaze093 = 136; -const tRoomID kMarsMaze098 = 137; -const tRoomID kMarsMaze099 = 138; -const tRoomID kMarsMaze100 = 139; -const tRoomID kMarsMaze101 = 140; -const tRoomID kMarsMaze104 = 141; -const tRoomID kMarsMaze105 = 142; -const tRoomID kMarsMaze106 = 143; -const tRoomID kMarsMaze107 = 144; -const tRoomID kMarsMaze108 = 145; -const tRoomID kMarsMaze111 = 146; -const tRoomID kMarsMaze113 = 147; -const tRoomID kMarsMaze114 = 148; -const tRoomID kMarsMaze115 = 149; -const tRoomID kMarsMaze116 = 150; -const tRoomID kMarsMaze117 = 151; -const tRoomID kMarsMaze118 = 152; -const tRoomID kMarsMaze119 = 153; -const tRoomID kMarsMaze120 = 154; -const tRoomID kMarsMaze121 = 155; -const tRoomID kMarsMaze122 = 156; -const tRoomID kMarsMaze123 = 157; -const tRoomID kMarsMaze124 = 158; -const tRoomID kMarsMaze125 = 159; -const tRoomID kMarsMaze126 = 160; -const tRoomID kMarsMaze127 = 161; -const tRoomID kMarsMaze128 = 162; -const tRoomID kMarsMaze129 = 163; -const tRoomID kMarsMaze130 = 164; -const tRoomID kMarsMaze131 = 165; -const tRoomID kMarsMaze132 = 166; -const tRoomID kMarsMaze133 = 167; -const tRoomID kMarsMaze136 = 168; -const tRoomID kMarsMaze137 = 169; -const tRoomID kMarsMaze138 = 170; -const tRoomID kMarsMaze139 = 171; -const tRoomID kMarsMaze140 = 172; -const tRoomID kMarsMaze141 = 173; -const tRoomID kMarsMaze142 = 174; -const tRoomID kMarsMaze143 = 175; -const tRoomID kMarsMaze144 = 176; -const tRoomID kMarsMaze145 = 177; -const tRoomID kMarsMaze146 = 178; -const tRoomID kMarsMaze147 = 179; -const tRoomID kMarsMaze148 = 180; -const tRoomID kMarsMaze149 = 181; -const tRoomID kMarsMaze152 = 182; -const tRoomID kMarsMaze153 = 183; -const tRoomID kMarsMaze154 = 184; -const tRoomID kMarsMaze155 = 185; -const tRoomID kMarsMaze156 = 186; -const tRoomID kMarsMaze157 = 187; -const tRoomID kMarsMaze159 = 188; -const tRoomID kMarsMaze160 = 189; -const tRoomID kMarsMaze161 = 190; -const tRoomID kMarsMaze162 = 191; -const tRoomID kMarsMaze163 = 192; -const tRoomID kMarsMaze164 = 193; -const tRoomID kMarsMaze165 = 194; -const tRoomID kMarsMaze166 = 195; -const tRoomID kMarsMaze167 = 196; -const tRoomID kMarsMaze168 = 197; -const tRoomID kMarsMaze169 = 198; -const tRoomID kMarsMaze170 = 199; -const tRoomID kMarsMaze171 = 200; -const tRoomID kMarsMaze172 = 201; -const tRoomID kMarsMaze173 = 202; -const tRoomID kMarsMaze174 = 203; -const tRoomID kMarsMaze175 = 204; -const tRoomID kMarsMaze177 = 205; -const tRoomID kMarsMaze178 = 206; -const tRoomID kMarsMaze179 = 207; -const tRoomID kMarsMaze180 = 208; -const tRoomID kMarsMaze181 = 209; -const tRoomID kMarsMaze182 = 210; -const tRoomID kMarsMaze183 = 211; -const tRoomID kMarsMaze184 = 212; -const tRoomID kMarsMaze187 = 213; -const tRoomID kMarsMaze188 = 214; -const tRoomID kMarsMaze189 = 215; -const tRoomID kMarsMaze190 = 216; -const tRoomID kMarsMaze191 = 217; -const tRoomID kMarsMaze192 = 218; -const tRoomID kMarsMaze193 = 219; -const tRoomID kMarsMaze194 = 220; -const tRoomID kMarsMaze195 = 221; -const tRoomID kMarsMaze198 = 222; -const tRoomID kMarsMaze199 = 223; -const tRoomID kMarsDeathRoom = 225; - -// Hot Spot Activation IDs. - -const tHotSpotActivationID kActivationReadyForKiosk = 1; -const tHotSpotActivationID kActivationKioskChoice = 2; -const tHotSpotActivationID kActivationTunnelMapReady = 3; -const tHotSpotActivationID kActivateMarsPodClosed = 4; -const tHotSpotActivationID kActivateMarsPodOpen = 5; -const tHotSpotActivationID kActivateReadyToPressurizeAirlock = 6; -const tHotSpotActivationID kActivateAirlockPressurized = 7; -const tHotSpotActivationID kActivateMaskOnHolder = 8; -const tHotSpotActivationID kActivateMaskOnFiller = 9; -const tHotSpotActivationID kActivateReactorPlatformOut = 10; -const tHotSpotActivationID kActivateReactorPlatformIn = 11; -const tHotSpotActivationID kActivateReactorAskLowerScreen = 12; -const tHotSpotActivationID kActivateReactorReadyForNitrogen = 13; -const tHotSpotActivationID kActivateReactorReadyForCrowBar = 14; -const tHotSpotActivationID kActivateReactorAskOperation = 15; -const tHotSpotActivationID kActivateReactorRanEvaluation = 16; -const tHotSpotActivationID kActivateReactorRanDiagnostics = 17; -const tHotSpotActivationID kActivateReactorAnalyzed = 18; -const tHotSpotActivationID kActivateReactorInstructions = 19; -const tHotSpotActivationID kActivateReactorInGame = 20; -const tHotSpotActivationID kActivateReactorBombSafe = 21; -const tHotSpotActivationID kActivateReactorBombExposed = 22; -const tHotSpotActivationID kActivationRobotHeadClosed = 23; -const tHotSpotActivationID kActivationRobotHeadOpen = 24; - -// Hot Spot IDs. - -const tHotSpotID kMars11NorthKioskSpotID = 5000; -const tHotSpotID kMars11NorthKioskSightsSpotID = 5001; -const tHotSpotID kMars11NorthKioskColonySpotID = 5002; -const tHotSpotID kMars12NorthKioskSpotID = 5003; -const tHotSpotID kMars12NorthKioskSightsSpotID = 5004; -const tHotSpotID kMars12NorthKioskColonySpotID = 5005; -const tHotSpotID kMars31SouthSpotID = 5006; -const tHotSpotID kMars31SouthOutSpotID = 5007; -const tHotSpotID kMars31SouthCardSpotID = 5008; -const tHotSpotID kMars33NorthSpotID = 5009; -const tHotSpotID kMars33NorthOutSpotID = 5010; -const tHotSpotID kMars33NorthMonitorSpotID = 5011; -const tHotSpotID kMars34NorthCardDropSpotID = 5012; -const tHotSpotID kMars34SouthOpenStorageSpotID = 5013; -const tHotSpotID kMars34SouthCloseStorageSpotID = 5014; -const tHotSpotID kMars34SouthCrowbarSpotID = 5015; -const tHotSpotID kMars35EastPressurizeSpotID = 5016; -const tHotSpotID kMars35EastSpinSpotID = 5017; -const tHotSpotID kMars35WestPressurizeSpotID = 5018; -const tHotSpotID kMars35WestSpinSpotID = 5019; -const tHotSpotID kMars45NorthOpenStorageSpotID = 5020; -const tHotSpotID kMars45NorthCloseStorageSpotID = 5021; -const tHotSpotID kMars45NorthCrowbarSpotID = 5022; -const tHotSpotID kAttackRobotHotSpotID = 5023; -const tHotSpotID kMars49AirMaskSpotID = 5024; -const tHotSpotID kMars49AirMaskFilledSpotID = 5025; -const tHotSpotID kMars49AirFillingDropSpotID = 5026; -const tHotSpotID kMars52MoveLeftSpotID = 5027; -const tHotSpotID kMars52MoveRightSpotID = 5028; -const tHotSpotID kMars52ExtractSpotID = 5029; -const tHotSpotID kMars53RetractSpotID = 5030; -const tHotSpotID kMars54MoveLeftSpotID = 5031; -const tHotSpotID kMars54MoveRightSpotID = 5032; -const tHotSpotID kMars54ExtractSpotID = 5033; -const tHotSpotID kMars55RetractSpotID = 5034; -const tHotSpotID kMars56MoveLeftSpotID = 5035; -const tHotSpotID kMars56MoveRightSpotID = 5036; -const tHotSpotID kMars56ExtractSpotID = 5037; -const tHotSpotID kMars57RetractSpotID = 5038; -const tHotSpotID kMars57LowerScreenSpotID = 5039; -const tHotSpotID kMars57Retract2SpotID = 5040; -const tHotSpotID kMars57DropNitrogenSpotID = 5041; -const tHotSpotID kMars57DropCrowBarSpotID = 5042; -const tHotSpotID kMars57CantOpenPanelSpotID = 5043; -const tHotSpotID kMars57ShieldEvaluationSpotID = 5044; -const tHotSpotID kMars57MeasureOutputSpotID = 5045; -const tHotSpotID kMars57RunDiagnosticsSpotID = 5046; -const tHotSpotID kMars57BackToOperationMenuSpotID = 5047; -const tHotSpotID kMars57AnalyzeObjectSpotID = 5048; -const tHotSpotID kMars57RemoveObjectMenuSpotID = 5049; -const tHotSpotID kMars57CircuitLinkSpotID = 5050; -const tHotSpotID kMars57CancelCircuitLinkSpotID = 5051; -const tHotSpotID kMars57GameInstructionsSpotID = 5052; -const tHotSpotID kMars57UndoMoveSpotID = 5053; -const tHotSpotID kMars57RedMoveSpotID = 5054; -const tHotSpotID kMars57YellowMoveSpotID = 5055; -const tHotSpotID kMars57GreenMoveSpotID = 5056; -const tHotSpotID kMars57BlueMoveSpotID = 5057; -const tHotSpotID kMars57PurpleMoveSpotID = 5058; -const tHotSpotID kMars57LowerScreenSafelySpotID = 5059; -const tHotSpotID kMars57GrabBombSpotID = 5060; -const tHotSpotID kMars58MoveLeftSpotID = 5061; -const tHotSpotID kMars58MoveRightSpotID = 5062; -const tHotSpotID kMars58ExtractSpotID = 5063; -const tHotSpotID kMars59RetractSpotID = 5064; -const tHotSpotID kMars60EastPressurizeSpotID = 5065; -const tHotSpotID kMars60EastSpinSpotID = 5066; -const tHotSpotID kMars60WestPressurizeSpotID = 5067; -const tHotSpotID kMars60WestSpinSpotID = 5068; -const tHotSpotID kRobotShuttleOpenHeadSpotID = 5069; -const tHotSpotID kRobotShuttleMapChipSpotID = 5070; -const tHotSpotID kRobotShuttleOpticalChipSpotID = 5071; -const tHotSpotID kRobotShuttleShieldChipSpotID = 5072; - -// Extra sequence IDs. - -const tExtraID kMarsArrivalFromTSA = 0; -const tExtraID kMars0AWatchShuttleDepart = 1; -const tExtraID kRobotThrowsPlayer = 2; -const tExtraID kMarsInfoKioskIntro = 3; -const tExtraID kMarsColonyInfo = 4; -const tExtraID kMarsSightsInfo = 5; -const tExtraID kRobotOnWayToShuttle = 6; -const tExtraID kMars31SouthZoomInNoCard = 7; -const tExtraID kMars31SouthViewNoCard = 8; -const tExtraID kMars31SouthZoomOutNoCard = 9; -const tExtraID kMars31SouthZoomViewNoCard = 10; -const tExtraID kMars33SlideShow1 = 11; -const tExtraID kMars33SlideShow2 = 12; -const tExtraID kMars33SlideShow3 = 13; -const tExtraID kMars33SlideShow4 = 14; -const tExtraID kMars34SpotOpenWithBar = 15; -const tExtraID kMars34SpotCloseWithBar = 16; -const tExtraID kMars34SpotOpenNoBar = 17; -const tExtraID kMars34SpotCloseNoBar = 18; -const tExtraID kMars34ViewOpenWithBar = 19; -const tExtraID kMars34ViewOpenNoBar = 20; -const tExtraID kMars34NorthPodGreeting = 21; -const tExtraID kMarsTurnOnPod = 22; -const tExtraID kMarsTakePodToMars45 = 23; -const tExtraID kMars35WestSpinAirlockToEast = 24; -const tExtraID kMars35EastSpinAirlockToWest = 25; -const tExtraID kMars45SpotOpenWithBar = 26; -const tExtraID kMars45SpotCloseWithBar = 27; -const tExtraID kMars45SpotOpenNoBar = 28; -const tExtraID kMars45SpotCloseNoBar = 29; -const tExtraID kMars45ViewOpenWithBar = 30; -const tExtraID kMars45ViewOpenNoBar = 31; -const tExtraID kMars48RobotApproaches = 32; -const tExtraID kMars48RobotKillsPlayer = 33; -const tExtraID kMars48RobotLoops = 34; -const tExtraID kMars48RobotView = 35; -const tExtraID kMars48RobotDefends = 36; -const tExtraID kMars49SouthViewMaskFilling = 37; -const tExtraID kMars52SpinLeft = 38; -const tExtraID kMars52SpinRight = 39; -const tExtraID kMars52Extend = 40; -const tExtraID kMars53Retract = 41; -const tExtraID kMars54SpinLeft = 42; -const tExtraID kMars54SpinRight = 43; -const tExtraID kMars54Extend = 44; -const tExtraID kMars55Retract = 45; -const tExtraID kMars56SpinLeft = 46; -const tExtraID kMars56SpinRight = 47; -const tExtraID kMars56ExtendWithBomb = 48; -const tExtraID kMars56ExtendNoBomb = 49; -const tExtraID kMars57RetractWithBomb = 50; -const tExtraID kMars57RetractNoBomb = 51; -const tExtraID kMars57LowerScreenClosed = 52; -const tExtraID kMars57CantOpenPanel = 53; -const tExtraID kMars57FreezeLock = 54; -const tExtraID kMars57BreakLock = 55; -const tExtraID kMars57LockFrozenView = 56; -const tExtraID kMars57ThawLock = 57; -const tExtraID kMars57OpenPanel = 58; -const tExtraID kMars57OpenPanelChoices = 59; -const tExtraID kMars57ShieldEvaluation = 60; -const tExtraID kMars57MeasureOutput = 61; -const tExtraID kMars57ShieldOkayLoop = 62; -const tExtraID kMars57RunDiagnostics = 63; -const tExtraID kMars57BombExplodes = 64; -const tExtraID kMars57BombAnalysis = 65; -const tExtraID kMars57DontLink = 66; -const tExtraID kMars57CircuitLink = 67; -const tExtraID kMars57GameLevel1 = 68; -const tExtraID kMars57GameLevel2 = 69; -const tExtraID kMars57GameLevel3 = 70; -const tExtraID kMars57BombExplodesInGame = 71; -const tExtraID kMars57GameSolved = 72; -const tExtraID kMars57ExposeBomb = 73; -const tExtraID kMars57BackToNormal = 74; -const tExtraID kMars57ViewOpenNoBomb = 75; -const tExtraID kMars58SpinLeft = 76; -const tExtraID kMars58SpinRight = 77; -const tExtraID kMars58Extend = 78; -const tExtraID kMars59Retract = 79; -const tExtraID kMars60WestSpinAirlockToEast = 80; -const tExtraID kMars60EastSpinAirlockToWest = 81; -const tExtraID kMarsRobotHeadOpen = 82; -const tExtraID kMarsRobotHeadClose = 83; -const tExtraID kMarsRobotHead000 = 84; -const tExtraID kMarsRobotHead001 = 85; -const tExtraID kMarsRobotHead010 = 86; -const tExtraID kMarsRobotHead011 = 87; -const tExtraID kMarsRobotHead100 = 88; -const tExtraID kMarsRobotHead101 = 89; -const tExtraID kMarsRobotHead110 = 90; -const tExtraID kMarsRobotHead111 = 91; -const tExtraID kMarsMaze007RobotApproach = 92; -const tExtraID kMarsMaze007RobotLoop = 93; -const tExtraID kMarsMaze007RobotDeath = 94; -const tExtraID kMarsMaze015SouthRobotApproach = 95; -const tExtraID kMarsMaze015SouthRobotLoop = 96; -const tExtraID kMarsMaze015SouthRobotDeath = 97; -const tExtraID kMarsMaze101EastRobotApproach = 98; -const tExtraID kMarsMaze101EastRobotLoop = 99; -const tExtraID kMarsMaze101EastRobotDeath = 100; -const tExtraID kMarsMaze104WestLoop = 101; -const tExtraID kMarsMaze104WestDeath = 102; -const tExtraID kMarsMaze133SouthApproach = 103; -const tExtraID kMarsMaze133SouthLoop = 104; -const tExtraID kMarsMaze133SouthDeath = 105; -const tExtraID kMarsMaze136NorthApproach = 106; -const tExtraID kMarsMaze136NorthLoop = 107; -const tExtraID kMarsMaze136NorthDeath = 108; -const tExtraID kMarsMaze184WestLoop = 109; -const tExtraID kMarsMaze184WestDeath = 110; -const tExtraID kMars200DeathInBucket = 111; - -const tResIDType kReactorUndoHilitePICTID = 900; - -const int16 kMars52Compass = 90; -const int16 kMars54Compass = 180; -const int16 kMars56Compass = 270; -const int16 kMars58Compass = 0; - // This should really be 22.5. // Probably no one will know the difference. const int16 kMarsShieldPanelOffsetAngle = 22; @@ -747,6 +78,13 @@ enum { kMaze184RobotLoopingTime = 96 * kMarsFrameDuration }; +// I've made a couple macros for these rects so we don't +// have to globally construct them or whatnot +#define kShuttleEnergyBeamBounds Common::Rect(24, 27, 24 + 112, 27 + 46) +#define kShuttleGravitonBounds Common::Rect(24, 73, 24 + 112, 73 + 30) +#define kShuttleTractorBounds Common::Rect(24, 103, 24 + 112, 103 + 30) +#define kShuttleTransportBounds Common::Rect(484, 353, 89 + 484, 79 + 353) + void robotTimerExpiredFunction(FunctionPtr *, void *mars) { ((Mars *)mars)->robotTiredOfWaiting(); } @@ -778,7 +116,10 @@ Mars::Mars(InputHandler *nextHandler, PegasusEngine *owner) : Neighborhood(nextH _leftShuttleMovie(kNoDisplayElement), _rightShuttleMovie(kNoDisplayElement), _lowerLeftShuttleMovie(kNoDisplayElement), _lowerRightShuttleMovie(kNoDisplayElement), _centerShuttleMovie(kNoDisplayElement), _upperLeftShuttleMovie(kNoDisplayElement), _upperRightShuttleMovie(kNoDisplayElement), - _leftDamageShuttleMovie(kNoDisplayElement), _rightDamageShuttleMovie(kNoDisplayElement), _explosions(kNoDisplayElement) { + _leftDamageShuttleMovie(kNoDisplayElement), _rightDamageShuttleMovie(kNoDisplayElement), _explosions(kNoDisplayElement), + _planetMovie(kNoDisplayElement), _junk(kNoDisplayElement), _energyChoiceSpot(kShuttleEnergySpotID), + _gravitonChoiceSpot(kShuttleGravitonSpotID), _tractorChoiceSpot(kShuttleTractorSpotID), + _shuttleViewSpot(kShuttleViewSpotID), _shuttleTransportSpot(kShuttleTransportSpotID) { _noAirFuse.setFunctionPtr(&airStageExpiredFunction, this); setIsItemTaken(kMarsCard); setIsItemTaken(kAirMask); @@ -787,6 +128,11 @@ Mars::Mars(InputHandler *nextHandler, PegasusEngine *owner) : Neighborhood(nextH } Mars::~Mars() { + g_allHotspots.remove(&_energyChoiceSpot); + g_allHotspots.remove(&_gravitonChoiceSpot); + g_allHotspots.remove(&_tractorChoiceSpot); + g_allHotspots.remove(&_shuttleViewSpot); + g_allHotspots.remove(&_shuttleTransportSpot); } void Mars::init() { @@ -1880,8 +1226,12 @@ void Mars::arriveAt(const tRoomID room, const tDirectionConstant direction) { } break; case MakeRoomView(kMars44, kWest): - // TODO: Space Chase - _neighborhoodNotification.setNotificationFlags(kTimeForCanyonChaseFlag, kTimeForCanyonChaseFlag); + if (GameState.getMarsReadyForShuttleTransport()) + startUpFromFinishedSpaceChase(); + else if (GameState.getMarsFinishedCanyonChase()) + startUpFromSpaceChase(); + else + _neighborhoodNotification.setNotificationFlags(kTimeForCanyonChaseFlag, kTimeForCanyonChaseFlag); break; case MakeRoomView(kMars10, kNorth): if (!GameState.getMarsRobotThrownPlayer()) @@ -2306,7 +1656,15 @@ void Mars::activateHotspots() { break; default: if (_privateFlags.getFlag(kMarsPrivateInSpaceChaseFlag)) { - // TODO + if (GameState.getMarsReadyForShuttleTransport()) { + _shuttleTransportSpot.setActive(); + } else { + _energyChoiceSpot.setActive(); + _gravitonChoiceSpot.setActive(); + _tractorChoiceSpot.setActive(); + if (_weaponSelection != kNoWeapon) + _shuttleViewSpot.setActive(); + } } break; } @@ -2414,6 +1772,13 @@ void Mars::clickInHotspot(const Input &input, const Hotspot *clickedSpot) { playSpotSoundSync(kMarsColorMatchingButtonBeepIn, kMarsColorMatchingButtonBeepOut); doReactorGuess(4); break; + case kShuttleEnergySpotID: + case kShuttleGravitonSpotID: + case kShuttleTractorSpotID: + case kShuttleViewSpotID: + case kShuttleTransportSpotID: + spaceChaseClick(input, clickedSpot->getObjectID()); + break; default: Neighborhood::clickInHotspot(input, clickedSpot); break; @@ -2450,7 +1815,8 @@ tInputBits Mars::getInputFilter() { result &= ~kFilterAllDirections; break; case MakeRoomView(kMars44, kWest): - // TODO + if (_canyonChaseMovie.isMovieValid() && _canyonChaseMovie.isRunning()) + result &= ~kFilterAllDirections; break; } @@ -3007,7 +2373,7 @@ void Mars::receiveNotification(Notification *notification, const tNotificationFl recallToTSASuccess(); } } else if ((flag & kTimeToTransportFlag) != 0) { - // TODO + transportToRobotShip(); } if (g_AIArea) @@ -3128,6 +2494,7 @@ void Mars::doCanyonChase() { // Take it down a tick initially. This sets the time to the time of the last tick, // so that subsequence drops will drop it down a tick. _leftDamageShuttleMovie.setTime(_leftDamageShuttleMovie.getTime() - 40); + _leftDamageShuttleMovie.redrawMovieWorld(); _lowerRightShuttleMovie.show(); _lowerRightShuttleMovie.setTime(kShuttleLowerRightOffTime); @@ -3178,6 +2545,242 @@ void Mars::doCanyonChase() { startMarsTimer(kLaunchTubeReachedTime, kMovieTicksPerSecond, kMarsLaunchTubeReached); } +void Mars::startUpFromFinishedSpaceChase() { + setNextHandler(_vm); + throwAwayInterface(); + + initOnePicture(&_shuttleInterface1, "Images/Mars/MCmain1.pict", kShuttleBackgroundOrder, kShuttle1Left, + kShuttle1Top, true); + initOnePicture(&_shuttleInterface2, "Images/Mars/MCmain2.pict", kShuttleBackgroundOrder, kShuttle2Left, + kShuttle2Top, true); + initOnePicture(&_shuttleInterface3, "Images/Mars/MCmain3.pict", kShuttleBackgroundOrder, kShuttle3Left, + kShuttle3Top, true); + initOnePicture(&_shuttleInterface4, "Images/Mars/MCmain4.pict", kShuttleBackgroundOrder, kShuttle4Left, + kShuttle4Top, true); + + initOneMovie(&_leftShuttleMovie, "Images/Mars/Left Shuttle.movie", + kShuttleMonitorOrder, kShuttleLeftLeft, kShuttleLeftTop, false); + + initOneMovie(&_rightShuttleMovie, "Images/Mars/Right Shuttle.movie", + kShuttleMonitorOrder, kShuttleRightLeft, kShuttleRightTop, false); + + initOneMovie(&_lowerLeftShuttleMovie, "Images/Mars/Lower Left Shuttle.movie", kShuttleMonitorOrder, + kShuttleLowerLeftLeft, kShuttleLowerLeftTop, false); + + initOneMovie(&_lowerRightShuttleMovie, "Images/Mars/Lower Right Shuttle.movie", kShuttleMonitorOrder, + kShuttleLowerRightLeft, kShuttleLowerRightTop, false); + + initOneMovie(&_centerShuttleMovie, "Images/Mars/Center Shuttle.movie", + kShuttleMonitorOrder, kShuttleCenterLeft, kShuttleCenterTop, false); + + initOneMovie(&_upperLeftShuttleMovie, "Images/Mars/Upper Left Shuttle.movie", kShuttleMonitorOrder, + kShuttleUpperLeftLeft, kShuttleUpperLeftTop, false); + + initOneMovie(&_upperRightShuttleMovie, "Images/Mars/Upper Right Shuttle.movie", kShuttleMonitorOrder, + kShuttleUpperRightLeft, kShuttleUpperRightTop, false); + + initOneMovie(&_leftDamageShuttleMovie, "Images/Mars/Left Damage Shuttle.movie", + kShuttleStatusOrder, kShuttleLeftEnergyLeft, kShuttleLeftEnergyTop, false); + + initOneMovie(&_rightDamageShuttleMovie, "Images/Mars/Right Damage Shuttle.movie", + kShuttleStatusOrder, kShuttleRightEnergyLeft, kShuttleRightEnergyTop, false); + + _centerShuttleMovie.show(); + + _shuttleEnergyMeter.initShuttleEnergyMeter(); + _shuttleEnergyMeter.setEnergyValue(kFullShuttleEnergy); + + _leftShuttleMovie.show(); + _leftShuttleMovie.setTime(kShuttleLeftNormalTime); + _leftShuttleMovie.redrawMovieWorld(); + + _leftDamageShuttleMovie.show(); + _leftDamageShuttleMovie.setTime(_leftDamageShuttleMovie.getDuration() - 40); + _leftDamageShuttleMovie.redrawMovieWorld(); + + _lowerRightShuttleMovie.show(); + + _lowerLeftShuttleMovie.show(); + + loadLoopSound1("Sounds/Mars/Space Ambient.22K.8.AIFF"); + + initOneMovie(&_junk, "Images/Mars/Junk.movie", kShuttleJunkOrder, kShuttleJunkLeft, + kShuttleJunkTop, false); + + initOneMovie(&_explosions, "Images/Mars/Explosions.movie", kShuttleWeaponFrontOrder, 0, 0, false); + _explosionCallBack.initCallBack(&_explosions, kCallBackAtExtremes); + + _energyBeam.initShuttleWeapon(); + _gravitonCannon.initShuttleWeapon(); + + _upperLeftShuttleMovie.show(); + _upperLeftShuttleMovie.setTime(kShuttleUpperLeftDimTime); + _upperLeftShuttleMovie.redrawMovieWorld(); + + _rightShuttleMovie.show(); + _rightShuttleMovie.setTime(kShuttleRightIntroStop - 1); + _rightShuttleMovie.redrawMovieWorld(); + + _rightDamageShuttleMovie.show(); + _rightDamageShuttleMovie.setTime(40); + _rightDamageShuttleMovie.redrawMovieWorld(); + + _lowerLeftShuttleMovie.setTime(kShuttleLowerLeftAutopilotTime); + _lowerLeftShuttleMovie.redrawMovieWorld(); + + _shuttleTransportSpot.setArea(kShuttleTransportBounds); + _shuttleTransportSpot.setHotspotFlags(kNeighborhoodSpotFlag | kClickSpotFlag); + g_allHotspots.push_back(&_shuttleTransportSpot); + + _privateFlags.setFlag(kMarsPrivateInSpaceChaseFlag, true); + + _upperRightShuttleMovie.show(); + _upperRightShuttleMovie.setTime(kShuttleUpperRightOverloadTime); + _upperRightShuttleMovie.redrawMovieWorld(); + + _centerShuttleMovie.setTime(kShuttleCenterSafeTime); + _centerShuttleMovie.redrawMovieWorld(); + + _lowerRightShuttleMovie.setTime(kShuttleLowerRightTransportTime); + _lowerRightShuttleMovie.redrawMovieWorld(); + + initOneMovie(&_canyonChaseMovie, "Images/Mars/M98EAS.movie", kShuttleTractorBeamMovieOrder, + kShuttleWindowLeft, kShuttleWindowTop, true); + _canyonChaseMovie.setTime(_canyonChaseMovie.getDuration()); + _canyonChaseMovie.redrawMovieWorld(); +} + +void Mars::startUpFromSpaceChase() { + setNextHandler(_vm); + throwAwayInterface(); + + // Open the spot sounds movie again... + _spotSounds.initFromQuickTime(getSoundSpotsName()); + _spotSounds.setVolume(_vm->getSoundFXLevel());; + + initOnePicture(&_shuttleInterface1, "Images/Mars/MCmain1.pict", kShuttleBackgroundOrder, kShuttle1Left, + kShuttle1Top, true); + initOnePicture(&_shuttleInterface2, "Images/Mars/MCmain2.pict", kShuttleBackgroundOrder, kShuttle2Left, + kShuttle2Top, true); + initOnePicture(&_shuttleInterface3, "Images/Mars/MCmain3.pict", kShuttleBackgroundOrder, kShuttle3Left, + kShuttle3Top, true); + initOnePicture(&_shuttleInterface4, "Images/Mars/MCmain4.pict", kShuttleBackgroundOrder, kShuttle4Left, + kShuttle4Top, true); + + initOneMovie(&_leftShuttleMovie, "Images/Mars/Left Shuttle.movie", + kShuttleMonitorOrder, kShuttleLeftLeft, kShuttleLeftTop, false); + + initOneMovie(&_rightShuttleMovie, "Images/Mars/Right Shuttle.movie", + kShuttleMonitorOrder, kShuttleRightLeft, kShuttleRightTop, false); + + initOneMovie(&_lowerLeftShuttleMovie, "Images/Mars/Lower Left Shuttle.movie", kShuttleMonitorOrder, + kShuttleLowerLeftLeft, kShuttleLowerLeftTop, false); + + initOneMovie(&_lowerRightShuttleMovie, "Images/Mars/Lower Right Shuttle.movie", kShuttleMonitorOrder, + kShuttleLowerRightLeft, kShuttleLowerRightTop, false); + + initOneMovie(&_centerShuttleMovie, "Images/Mars/Center Shuttle.movie", + kShuttleMonitorOrder, kShuttleCenterLeft, kShuttleCenterTop, false); + + initOneMovie(&_upperLeftShuttleMovie, "Images/Mars/Upper Left Shuttle.movie", kShuttleMonitorOrder, + kShuttleUpperLeftLeft, kShuttleUpperLeftTop, false); + + initOneMovie(&_upperRightShuttleMovie, "Images/Mars/Upper Right Shuttle.movie", kShuttleMonitorOrder, + kShuttleUpperRightLeft, kShuttleUpperRightTop, false); + + initOneMovie(&_leftDamageShuttleMovie, "Images/Mars/Left Damage Shuttle.movie", + kShuttleStatusOrder, kShuttleLeftEnergyLeft, kShuttleLeftEnergyTop, false); + + initOneMovie(&_rightDamageShuttleMovie, "Images/Mars/Right Damage Shuttle.movie", + kShuttleStatusOrder, kShuttleRightEnergyLeft, kShuttleRightEnergyTop, false); + + _centerShuttleMovie.show(); + + _shuttleEnergyMeter.initShuttleEnergyMeter(); + _shuttleEnergyMeter.setEnergyValue(kFullShuttleEnergy); + + _leftShuttleMovie.show(); + _leftShuttleMovie.setTime(kShuttleLeftNormalTime); + _leftShuttleMovie.redrawMovieWorld(); + + _leftDamageShuttleMovie.show(); + _leftDamageShuttleMovie.setTime(_leftDamageShuttleMovie.getDuration() - 40); + _leftDamageShuttleMovie.redrawMovieWorld(); + + _lowerRightShuttleMovie.show(); + + _lowerLeftShuttleMovie.show(); + + loadLoopSound1("Sounds/Mars/Space Ambient.22K.8.AIFF"); + + initOneMovie(&_planetMovie, "Images/Mars/Planet.movie", kShuttlePlanetOrder, + kPlanetStartLeft, kPlanetStartTop, true); + _planetMovie.setFlags(kLoopTimeBase); + + initOneMovie(&_junk, "Images/Mars/Junk.movie", kShuttleJunkOrder, kShuttleJunkLeft, + kShuttleJunkTop, false); + + initOneMovie(&_explosions, "Images/Mars/Explosions.movie", kShuttleWeaponFrontOrder, 0, 0, false); + _explosionCallBack.initCallBack(&_explosions, kCallBackAtExtremes); + + _energyBeam.initShuttleWeapon(); + _gravitonCannon.initShuttleWeapon(); + + _upperLeftShuttleMovie.show(); + + _robotShip.initRobotShip(); + + _planetMovie.start(); + _planetMover.startMoving(&_planetMovie); + + _upperLeftShuttleMovie.setTime(kShuttleUpperLeftDimTime); + _upperLeftShuttleMovie.redrawMovieWorld(); + + _centerShuttleMovie.setTime(kShuttleCenterTargetSightedTime); + _centerShuttleMovie.redrawMovieWorld(); + + _lowerRightShuttleMovie.setTime(kShuttleLowerRightTrackingTime); + _lowerRightShuttleMovie.redrawMovieWorld(); + + _rightShuttleMovie.show(); + _rightShuttleMovie.setTime(kShuttleRightIntroStop - 1); + _rightShuttleMovie.redrawMovieWorld(); + + _rightDamageShuttleMovie.show(); + _rightDamageShuttleMovie.setTime(_rightDamageShuttleMovie.getDuration() - 40); + _rightDamageShuttleMovie.redrawMovieWorld(); + + _lowerLeftShuttleMovie.setTime(kShuttleLowerLeftAutopilotTime); + _lowerLeftShuttleMovie.redrawMovieWorld(); + + _robotShip.startMoving(); + + _shuttleHUD.initShuttleHUD(); + + _tractorBeam.startDisplaying(); + + _energyChoiceSpot.setArea(kShuttleEnergyBeamBounds); + _energyChoiceSpot.setHotspotFlags(kNeighborhoodSpotFlag | kClickSpotFlag); + g_allHotspots.push_back(&_energyChoiceSpot); + _gravitonChoiceSpot.setArea(kShuttleGravitonBounds); + _gravitonChoiceSpot.setHotspotFlags(kNeighborhoodSpotFlag | kClickSpotFlag); + g_allHotspots.push_back(&_gravitonChoiceSpot); + _tractorChoiceSpot.setArea(kShuttleTractorBounds); + _tractorChoiceSpot.setHotspotFlags(kNeighborhoodSpotFlag | kClickSpotFlag); + g_allHotspots.push_back(&_tractorChoiceSpot); + _shuttleViewSpot.setArea(kShuttleWindowLeft, kShuttleWindowTop, + kShuttleWindowLeft + kShuttleWindowWidth, kShuttleWindowTop + kShuttleWindowHeight); + _shuttleViewSpot.setHotspotFlags(kNeighborhoodSpotFlag | kClickSpotFlag); + g_allHotspots.push_back(&_shuttleViewSpot); + _shuttleTransportSpot.setArea(kShuttleTransportBounds); + _shuttleTransportSpot.setHotspotFlags(kNeighborhoodSpotFlag | kClickSpotFlag); + g_allHotspots.push_back(&_shuttleTransportSpot); + + _privateFlags.setFlag(kMarsPrivateInSpaceChaseFlag, true); + + startMarsTimer(kSpaceChaseTimeLimit, kOneTickPerSecond, kMarsSpaceChaseFinished); +} + void Mars::setSoundFXLevel(const uint16 level) { Neighborhood::setSoundFXLevel(level); @@ -3219,7 +2822,101 @@ void Mars::marsTimerExpired(MarsTimerEvent &event) { _canyonChaseMovie.stopDisplaying(); _canyonChaseMovie.releaseMovie(); - error("STUB: Space chase"); + loadLoopSound1("Sounds/Mars/Space Ambient.22K.8.AIFF"); + + playSpotSoundSync(kShuttleConfiguringIn, kShuttleConfiguringOut); + playSpotSoundSync(kShuttleGeneratingIn, kShuttleGeneratingOut); + playSpotSoundSync(kShuttleBreakawayIn, kShuttleBreakawayOut); + playSpotSoundSync(kMarsAtmosphericBreakawayIn, kMarsAtmosphericBreakawayOut); + + initOneMovie(&_planetMovie, "Images/Mars/Planet.movie", kShuttlePlanetOrder, kPlanetStartLeft, kPlanetStartTop, true); + _planetMovie.setFlags(kLoopTimeBase); + + initOneMovie(&_junk, "Images/Mars/Junk.movie", kShuttleJunkOrder, kShuttleJunkLeft, kShuttleJunkTop, false); + + initOneMovie(&_explosions, "Images/Mars/Explosions.movie", kShuttleWeaponFrontOrder, 0, 0, false); + _explosionCallBack.initCallBack(&_explosions, kCallBackAtExtremes); + + _energyBeam.initShuttleWeapon(); + _gravitonCannon.initShuttleWeapon(); + + _centerShuttleMovie.setTime(kShuttleCenterWeaponsTime); + _centerShuttleMovie.redrawMovieWorld(); + + _upperLeftShuttleMovie.show(); + _upperLeftShuttleMovie.setTime(kShuttleUpperLeftDampingTime); + _upperLeftShuttleMovie.redrawMovieWorld(); + + _robotShip.initRobotShip(); + + _planetMovie.start(); + _planetMover.startMoving(&_planetMovie); + + playSpotSoundSync(kShuttleDamperDescIn, kShuttleDamperDescOut); + _upperLeftShuttleMovie.setTime(kShuttleUpperLeftGravitonTime); + _upperLeftShuttleMovie.redrawMovieWorld(); + + playSpotSoundSync(kShuttleGravitonDescIn, kShuttleGravitonDescOut); + _upperLeftShuttleMovie.setTime(kShuttleUpperLeftTractorTime); + _upperLeftShuttleMovie.redrawMovieWorld(); + + playSpotSoundSync(kShuttleTractorDescIn, kShuttleTractorDescOut); + _upperLeftShuttleMovie.setTime(kShuttleUpperLeftDimTime); + _upperLeftShuttleMovie.redrawMovieWorld(); + + _centerShuttleMovie.setTime(kShuttleCenterTargetSightedTime); + _centerShuttleMovie.redrawMovieWorld(); + playSpotSoundSync(kShuttleTargetSightedIn, kShuttleTargetSightedOut); + + _lowerRightShuttleMovie.setTime(kShuttleLowerRightTrackingTime); + _lowerRightShuttleMovie.redrawMovieWorld(); + _rightShuttleMovie.show(); + playMovieSegment(&_rightShuttleMovie, kShuttleRightIntroStart, kShuttleRightIntroStop); + + _rightDamageShuttleMovie.show(); + playMovieSegment(&_rightDamageShuttleMovie); + + // Take it down a tick initially. This sets the time to the time of the last tick, + // so that subsequence drops will drop it down a tick. + _rightDamageShuttleMovie.setTime(_rightDamageShuttleMovie.getTime() - 40); + _rightDamageShuttleMovie.redrawMovieWorld(); + + _lowerLeftShuttleMovie.setTime(kShuttleLowerLeftAutopilotTime); + _lowerLeftShuttleMovie.redrawMovieWorld(); + playSpotSoundSync(kShuttleAutopilotEngagedIn, kShuttleAutopilotEngagedOut); + + _robotShip.startMoving(); + + _shuttleHUD.initShuttleHUD(); + + _tractorBeam.startDisplaying(); + + _energyChoiceSpot.setArea(kShuttleEnergyBeamBounds); + _energyChoiceSpot.setHotspotFlags(kNeighborhoodSpotFlag | kClickSpotFlag); + g_allHotspots.push_back(&_energyChoiceSpot); + _gravitonChoiceSpot.setArea(kShuttleGravitonBounds); + _gravitonChoiceSpot.setHotspotFlags(kNeighborhoodSpotFlag | kClickSpotFlag); + g_allHotspots.push_back(&_gravitonChoiceSpot); + _tractorChoiceSpot.setArea(kShuttleTractorBounds); + _tractorChoiceSpot.setHotspotFlags(kNeighborhoodSpotFlag | kClickSpotFlag); + g_allHotspots.push_back(&_tractorChoiceSpot); + _shuttleViewSpot.setArea(kShuttleWindowLeft, kShuttleWindowTop, + kShuttleWindowLeft + kShuttleWindowWidth, kShuttleWindowTop + kShuttleWindowHeight); + _shuttleViewSpot.setHotspotFlags(kNeighborhoodSpotFlag | kClickSpotFlag); + g_allHotspots.push_back(&_shuttleViewSpot); + _shuttleTransportSpot.setArea(kShuttleTransportBounds); + _shuttleTransportSpot.setHotspotFlags(kNeighborhoodSpotFlag | kClickSpotFlag); + g_allHotspots.push_back(&_shuttleTransportSpot); + + _privateFlags.setFlag(kMarsPrivateInSpaceChaseFlag, true); + + playSpotSoundSync(kMarsCockpitChatterIn, kMarsCockpitChatterOut); + + GameState.setMarsFinishedCanyonChase(true); + + startMarsTimer(kSpaceChaseTimeLimit, kOneTickPerSecond, kMarsSpaceChaseFinished); + + _vm->_cursor->hideUntilMoved(); break; case kMarsSpaceChaseFinished: // Player failed to stop the robot in time... @@ -3295,16 +2992,226 @@ void Mars::throwAwayMarsShuttle() { _leftDamageShuttleMovie.stopDisplaying(); _rightDamageShuttleMovie.releaseMovie(); _rightDamageShuttleMovie.stopDisplaying(); - - // TODO: Some more to do here + _shuttleEnergyMeter.disposeShuttleEnergyMeter(); _robotShip.cleanUpRobotShip(); + _shuttleHUD.cleanUpShuttleHUD(); + _tractorBeam.stopDisplaying(); + _junk.releaseMovie(); + _junk.stopDisplaying(); + _energyBeam.cleanUpShuttleWeapon(); + _gravitonCannon.cleanUpShuttleWeapon(); + g_allHotspots.remove(&_energyChoiceSpot); + g_allHotspots.remove(&_gravitonChoiceSpot); + g_allHotspots.remove(&_tractorChoiceSpot); + g_allHotspots.remove(&_shuttleViewSpot); + g_allHotspots.remove(&_shuttleTransportSpot); _explosions.releaseMovie(); _explosions.stopDisplaying(); loadLoopSound1(""); } +void Mars::transportToRobotShip() { + throwAwayMarsShuttle(); + + Video::VideoDecoder *video = new Video::QuickTimeDecoder(); + if (!video->loadFile("Images/Mars/M98EAE.movie")) + error("Could not load shuttle->interface transition video"); + + while (!_vm->shouldQuit() && !video->endOfVideo()) { + if (video->needsUpdate()) { + const Graphics::Surface *frame = video->decodeNextFrame(); + + if (frame) + _vm->drawScaledFrame(frame, 0, 0); + } + + Common::Event event; + while (g_system->getEventManager()->pollEvent(event)) + ; + + g_system->delayMillis(10); + } + + delete video; + + if (_vm->shouldQuit()) + return; + + reinstateMonocleInterface(); + + g_energyMonitor->stopEnergyDraining(); + g_energyMonitor->restoreLastEnergyValue(); + _vm->resetEnergyDeathReason(); + g_energyMonitor->startEnergyDraining(); + + arriveAt(kMarsRobotShuttle, kEast); + + _navMovie.stop(); + _navMovie.setTime(_navMovie.getStart()); + _navMovie.start(); +} + +const int kRobotTooStrong = 1; +const int kTractorTooWeak = 2; +const int kCapturedRobotShip = 3; + +void Mars::spaceChaseClick(const Input &input, const tHotSpotID id) { + Common::Point pt; + + switch (id) { + case kShuttleEnergySpotID: + _upperLeftShuttleMovie.setTime(kShuttleUpperLeftDampingTime); + _upperLeftShuttleMovie.redrawMovieWorld(); + _leftShuttleMovie.setTime(kShuttleLeftDampingTime); + _leftShuttleMovie.redrawMovieWorld(); + _shuttleHUD.hide(); + _weaponSelection = kEnergyBeam; + playSpotSoundSync(kShuttleDampingBeamIn, kShuttleDampingBeamOut); + break; + case kShuttleGravitonSpotID: + _upperLeftShuttleMovie.setTime(kShuttleUpperLeftGravitonTime); + _upperLeftShuttleMovie.redrawMovieWorld(); + _leftShuttleMovie.setTime(kShuttleLeftGravitonTime); + _leftShuttleMovie.redrawMovieWorld(); + _shuttleHUD.hide(); + _weaponSelection = kGravitonCannon; + playSpotSoundSync(kShuttleGravitonIn, kShuttleGravitonOut); + break; + case kShuttleTractorSpotID: + _upperLeftShuttleMovie.setTime(kShuttleUpperLeftTractorTime); + _upperLeftShuttleMovie.redrawMovieWorld(); + _leftShuttleMovie.setTime(kShuttleLeftTractorTime); + _leftShuttleMovie.redrawMovieWorld(); + _shuttleHUD.show(); + _weaponSelection = kTractorBeam; + playSpotSoundSync(kShuttleTractorBeamIn, kShuttleTractorBeamOut); + break; + case kShuttleViewSpotID: + switch (_weaponSelection) { + case kEnergyBeam: + if (_shuttleEnergyMeter.getEnergyValue() < kMinDampingEnergy) { + playSpotSoundSync(kShuttleEnergyTooLowIn, kShuttleEnergyTooLowOut); + } else { + if (_energyBeam.canFireWeapon()) { + _shuttleEnergyMeter.dropEnergyValue(kMinDampingEnergy); + input.getInputLocation(pt); + _energyBeam.fireWeapon(pt.x, pt.y); + playSpotSoundSync(kMarsEDBBlastIn, kMarsEDBBlastOut); + } + } + break; + case kGravitonCannon: + if (_shuttleEnergyMeter.getEnergyValue() < kMinGravitonEnergy) { + playSpotSoundSync(kShuttleEnergyTooLowIn, kShuttleEnergyTooLowOut); + } else { + if (_gravitonCannon.canFireWeapon()) { + _shuttleEnergyMeter.dropEnergyValue(kMinGravitonEnergy); + input.getInputLocation(pt); + _gravitonCannon.fireWeapon(pt.x, pt.y); + playSpotSoundSync(kMarsGravitonBlastIn, kMarsGravitonBlastOut); + } + } + break; + case kTractorBeam: + if (_shuttleHUD.isTargetLocked()) { + // play tractor beam sound? + _utilityFuse.stopFuse(); + + _tractorBeam.show(); + + int capture; + if (_rightDamageShuttleMovie.getTime() > 40) { + capture = kRobotTooStrong; + } else if (!_shuttleEnergyMeter.enoughEnergyForTractorBeam()) { + capture = kTractorTooWeak; + } else { + _robotShip.snareByTractorBeam(); + capture = kCapturedRobotShip; + _planetMover.dropPlanetOutOfSight(); + } + + _shuttleEnergyMeter.drainForTractorBeam(); + + while (_shuttleEnergyMeter.isFading()) { + _vm->checkCallBacks(); + _vm->refreshDisplay(); + _vm->_system->delayMillis(10); + } + + _shuttleEnergyMeter.setEnergyValue(_shuttleEnergyMeter.getEnergyValue()); + + switch (capture) { + case kRobotTooStrong: + _tractorBeam.hide(); + playSpotSoundSync(kShuttleBrokeFreeIn, kShuttleBrokeFreeOut); + _utilityFuse.lightFuse(); + break; + case kTractorTooWeak: + playSpotSoundSync(kShuttleCantHoldIn, kShuttleCantHoldOut); + _tractorBeam.hide(); + _utilityFuse.lightFuse(); + break; + case kCapturedRobotShip: + _tractorBeam.hide(); + _shuttleHUD.hide(); + _robotShip.cleanUpRobotShip(); + _planetMovie.stop(); + _planetMovie.stopDisplaying(); + _planetMovie.releaseMovie(); + + // Shameless reuse of a variable :P + initOneMovie(&_canyonChaseMovie, "Images/Mars/M98EAS.movie", kShuttleTractorBeamMovieOrder, + kShuttleWindowLeft, kShuttleWindowTop, true); + _canyonChaseMovie.redrawMovieWorld(); + playMovieSegment(&_canyonChaseMovie, 0, _canyonChaseMovie.getDuration()); + + // wait here until any junk clears... + while (_junk.junkFlying()) { + _vm->checkCallBacks(); + _vm->refreshDisplay(); + _vm->_system->delayMillis(10); + } + + _upperRightShuttleMovie.show(); + _upperRightShuttleMovie.setTime(kShuttleUpperRightOverloadTime); + _upperRightShuttleMovie.redrawMovieWorld(); + + playSpotSoundSync(kShuttleOverloadedIn, kShuttleOverloadedOut); + _centerShuttleMovie.setTime(kShuttleCenterVerifyingTime); + _centerShuttleMovie.redrawMovieWorld(); + + playSpotSoundSync(kShuttleCoordinatesIn, kShuttleCoordinatesOut); + _centerShuttleMovie.setTime(kShuttleCenterScanningTime); + _centerShuttleMovie.redrawMovieWorld(); + + playSpotSoundSync(kShuttleScanningIn, kShuttleScanningOut); + _centerShuttleMovie.setTime(kShuttleCenterSafeTime); + _centerShuttleMovie.redrawMovieWorld(); + + playSpotSoundSync(kShuttleSafeIn, kShuttleSafeOut); + _lowerRightShuttleMovie.setTime(kShuttleLowerRightTransportTime); + _lowerRightShuttleMovie.redrawMovieWorld(); + GameState.setMarsReadyForShuttleTransport(true); + break; + } + } else { + playSpotSoundSync(kShuttleTractorLimitedIn, kShuttleTractorLimitedOut); + } + break; + default: + break; + } + break; + case kShuttleTransportSpotID: + _lowerRightShuttleMovie.setTime(kShuttleLowerRightTransportHiliteTime); + _lowerRightShuttleMovie.redrawMovieWorld(); + _neighborhoodNotification.setNotificationFlags(kTimeToTransportFlag, kTimeToTransportFlag); + break; + } +} + void Mars::showBigExplosion(const Common::Rect &r, const tDisplayOrder order) { if (_explosions.isMovieValid()) { _explosions.setDisplayOrder(order); @@ -3351,6 +3258,8 @@ void Mars::showLittleExplosion(const Common::Rect &r, const tDisplayOrder order) void Mars::hitByJunk() { _leftDamageShuttleMovie.setTime(_leftDamageShuttleMovie.getTime() - 40); + _leftDamageShuttleMovie.redrawMovieWorld(); + playSpotSoundSync(kMarsJunkCollisionIn, kMarsJunkCollisionOut); if (_leftDamageShuttleMovie.getTime() == 0) { @@ -3363,8 +3272,10 @@ void Mars::hitByJunk() { t = _leftShuttleMovie.getTime(); _leftShuttleMovie.setTime(kShuttleLeftDamagedTime); + _leftShuttleMovie.redrawMovieWorld(); _vm->delayShell(1, 3); _leftShuttleMovie.setTime(t); + _leftShuttleMovie.redrawMovieWorld(); } } @@ -3404,6 +3315,17 @@ void Mars::decreaseRobotShuttleEnergy(const int delta, Common::Point impactPoint } } +void Mars::updateCursor(const Common::Point cursorLocation, const Hotspot *cursorSpot) { + if (cursorSpot && cursorSpot->getObjectID() == kShuttleViewSpotID) { + if (_weaponSelection != kNoWeapon) + _vm->_cursor->setCurrentFrameIndex(6); + else + _vm->_cursor->setCurrentFrameIndex(0); + } else { + Neighborhood::updateCursor(cursorLocation, cursorSpot); + } +} + tAirQuality Mars::getAirQuality(const tRoomID room) { if ((room >= kMars36 && room <= kMars39) || (room >= kMarsMaze004 && room <= kMarsMaze200)) return kAirQualityVacuum; diff --git a/engines/pegasus/neighborhood/mars/mars.h b/engines/pegasus/neighborhood/mars/mars.h index 8e199d1bc104..01474ab8318d 100755 --- a/engines/pegasus/neighborhood/mars/mars.h +++ b/engines/pegasus/neighborhood/mars/mars.h @@ -27,241 +27,19 @@ #define PEGASUS_NEIGHBORHOOD_MARS_MARS_H #include "pegasus/neighborhood/neighborhood.h" +#include "pegasus/neighborhood/mars/constants.h" +#include "pegasus/neighborhood/mars/energybeam.h" +#include "pegasus/neighborhood/mars/gravitoncannon.h" +#include "pegasus/neighborhood/mars/planetmover.h" #include "pegasus/neighborhood/mars/reactor.h" #include "pegasus/neighborhood/mars/robotship.h" #include "pegasus/neighborhood/mars/shuttleenergymeter.h" +#include "pegasus/neighborhood/mars/shuttlehud.h" +#include "pegasus/neighborhood/mars/spacejunk.h" +#include "pegasus/neighborhood/mars/tractorbeam.h" namespace Pegasus { -// Element Coordinates - -const tCoordType kUndoHiliteLeft = kNavAreaLeft + 140; -const tCoordType kUndoHiliteTop = kNavAreaTop + 36; - -const tCoordType kCurrentGuessLeft = kNavAreaLeft + 146; -const tCoordType kCurrentGuessTop = kNavAreaTop + 90; - -const tCoordType kReactorChoiceHiliteLeft = kNavAreaLeft + 116; -const tCoordType kReactorChoiceHiliteTop = kNavAreaTop + 158; - -const tCoordType kReactorHistoryLeft = kNavAreaLeft + 302; -const tCoordType kReactorHistoryTop = kNavAreaTop + 39; - -const tCoordType kAnswerLeft = kNavAreaLeft + 304; -const tCoordType kAnswerTop = kNavAreaTop + 180; - -const tCoordType kShuttle1Left = 0; -const tCoordType kShuttle1Top = 0; - -const tCoordType kShuttle2Left = 0; -const tCoordType kShuttle2Top = 96; - -const tCoordType kShuttle3Left = 500; -const tCoordType kShuttle3Top = 96; - -const tCoordType kShuttle4Left = 0; -const tCoordType kShuttle4Top = 320; - -const tCoordType kShuttleWindowLeft = 140; -const tCoordType kShuttleWindowTop = 96; -const tCoordType kShuttleWindowWidth = 360; -const tCoordType kShuttleWindowHeight = 224; - -const tCoordType kShuttleWindowMidH = (kShuttleWindowLeft * 2 + kShuttleWindowWidth) / 2; -const tCoordType kShuttleWindowMidV = (kShuttleWindowTop * 2 + kShuttleWindowHeight) / 2; - -const tCoordType kShuttleLeftLeft = 0; -const tCoordType kShuttleLeftTop = 128; - -const tCoordType kShuttleRightLeft = 506; -const tCoordType kShuttleRightTop = 128; - -const tCoordType kShuttleLowerLeftLeft = 74; -const tCoordType kShuttleLowerLeftTop = 358; - -const tCoordType kShuttleLowerRightLeft = 486; -const tCoordType kShuttleLowerRightTop = 354; - -const tCoordType kShuttleCenterLeft = 260; -const tCoordType kShuttleCenterTop = 336; - -const tCoordType kShuttleUpperLeftLeft = 30; -const tCoordType kShuttleUpperLeftTop = 32; - -const tCoordType kShuttleUpperRightLeft = 506; -const tCoordType kShuttleUpperRightTop = 52; - -const tCoordType kShuttleLeftEnergyLeft = 110; -const tCoordType kShuttleLeftEnergyTop = 186; - -const tCoordType kShuttleRightEnergyLeft = 510; -const tCoordType kShuttleRightEnergyTop = 186; - -const tCoordType kShuttleEnergyLeft = 186; -const tCoordType kShuttleEnergyTop = 60; -const tCoordType kShuttleEnergyWidth = 252; -const tCoordType kShuttleEnergyHeight = 22; - -const tCoordType kPlanetStartLeft = kShuttleWindowLeft; -const tCoordType kPlanetStartTop = kShuttleWindowTop + kShuttleWindowHeight; - -const tCoordType kPlanetStopLeft = kShuttleWindowLeft; -const tCoordType kPlanetStopTop = kShuttleWindowTop + kShuttleWindowHeight - 100; - -const tCoordType kShuttleTractorLeft = kShuttleWindowLeft + 6; -const tCoordType kShuttleTractorTop = kShuttleWindowTop + 56; -const tCoordType kShuttleTractorWidth = 348; -const tCoordType kShuttleTractorHeight = 112; - -const tCoordType kShuttleJunkLeft = kShuttleWindowLeft + 6; -const tCoordType kShuttleJunkTop = kShuttleWindowTop + 6; - -const tDisplayOrder kShuttlePlanetOrder = kInterfaceLayer; -const tDisplayOrder kShuttleAlienShipOrder = kShuttlePlanetOrder + 1; -const tDisplayOrder kShuttleRobotShipOrder = kShuttleAlienShipOrder + 1; -const tDisplayOrder kShuttleTractorBeamMovieOrder = kShuttleRobotShipOrder + 1; -const tDisplayOrder kShuttleWeaponBackOrder = kShuttleTractorBeamMovieOrder + 1; -const tDisplayOrder kShuttleJunkOrder = kShuttleWeaponBackOrder + 1; -const tDisplayOrder kShuttleWeaponFrontOrder = kShuttleJunkOrder + 1; -const tDisplayOrder kShuttleTractorBeamOrder = kShuttleWeaponFrontOrder + 1; -const tDisplayOrder kShuttleHUDOrder = kShuttleTractorBeamOrder + 1; -const tDisplayOrder kShuttleBackgroundOrder = kShuttleHUDOrder + 1; -const tDisplayOrder kShuttleMonitorOrder = kShuttleBackgroundOrder + 1; -const tDisplayOrder kShuttleStatusOrder = kShuttleMonitorOrder + 1; - -const TimeValue kShuttleSwingStart = 0; -const TimeValue kShuttleSwingStop = 5 * 600; - -const TimeValue kCanyonChaseStart = kShuttleSwingStop; -const TimeValue kCanyonChaseStop = 60 * 600 + 43 * 600 + 14 * 40; - -const TimeValue kLaunchTubeReachedTime = 60 * 600 + 38 * 600 - kCanyonChaseStart; -const TimeValue kCanyonChaseFinishedTime = kCanyonChaseStop - kCanyonChaseStart - - kLaunchTubeReachedTime; - -// Left shuttle. - -const TimeValue kShuttleLeftIntroStart = 0; -const TimeValue kShuttleLeftIntroStop = 400; - -const TimeValue kShuttleLeftBlankTime = 400; - -const TimeValue kShuttleLeftNormalTime = 440; - -const TimeValue kShuttleLeftAutoTestTime = 480; - -const TimeValue kShuttleLeftDamagedTime = 520; - -const TimeValue kShuttleLeftDampingTime = 560; - -const TimeValue kShuttleLeftGravitonTime = 600; - -const TimeValue kShuttleLeftTractorTime = 640; - -// Right shuttle. - -const TimeValue kShuttleRightIntroStart = 0; -const TimeValue kShuttleRightIntroStop = 400; - -const TimeValue kShuttleRightDestroyedStart = 400; -const TimeValue kShuttleRightDestroyedStop = 840; - -const TimeValue kShuttleRightBlankTime = 840; - -const TimeValue kShuttleRightNormalTime = 880; - -const TimeValue kShuttleRightDamagedTime = 920; - -const TimeValue kShuttleRightTargetLockTime = 960; - -const TimeValue kShuttleRightGravitonTime = 1000; - -const TimeValue kShuttleRightOverloadTime = 1040; - -// Lower Left shuttle. - -const TimeValue kShuttleLowerLeftCollisionTime = 0; - -const TimeValue kShuttleLowerLeftTubeTime = 40; - -const TimeValue kShuttleLowerLeftAutopilotTime = 80; - -// Lower Right shuttle. - -const TimeValue kShuttleLowerRightOffTime = 0; - -const TimeValue kShuttleLowerRightTrackingTime = 40; - -const TimeValue kShuttleLowerRightTransportTime = 80; - -const TimeValue kShuttleLowerRightTransportHiliteTime = 120; - -// Center shuttle. - -const TimeValue kShuttleCenterBoardingTime = 0; - -const TimeValue kShuttleCenterCheckTime = 40; - -const TimeValue kShuttleCenterNavCompTime = 80; - -const TimeValue kShuttleCenterCommTime = 120; - -const TimeValue kShuttleCenterWeaponsTime = 160; - -const TimeValue kShuttleCenterAllSystemsTime = 200; - -const TimeValue kShuttleCenterSecureLooseTime = 240; - -const TimeValue kShuttleCenterAutoTestTime = 280; - -const TimeValue kShuttleCenterLaunchTime = 320; - -const TimeValue kShuttleCenterEnterTubeTime = 360; - -const TimeValue kShuttleCenterTargetSightedTime = 400; - -const TimeValue kShuttleCenterVerifyingTime = 440; - -const TimeValue kShuttleCenterScanningTime = 480; - -const TimeValue kShuttleCenterSafeTime = 520; - -// Upper Left shuttle. - -const TimeValue kShuttleUpperLeftDimTime = 0; - -const TimeValue kShuttleUpperLeftDampingTime = 40; - -const TimeValue kShuttleUpperLeftGravitonTime = 80; - -const TimeValue kShuttleUpperLeftTractorTime = 120; - -// Upper Right shuttle. - -const TimeValue kShuttleUpperRightLockedTime = 0; - -const TimeValue kShuttleUpperRightArmedTime = 40; - -const TimeValue kShuttleUpperRightAlienDestroyedTime = 80; - -const TimeValue kShuttleUpperRightOverloadTime = 120; - -const TimeValue kShuttleUpperRightTargetDestroyedTime = 160; - -// Shuttle distance - -const int kShuttleDistance = 500; - -const int kJunkMaxDistance = kShuttleDistance; -const int kJunkMinDistance = 40; - -const int kEnergyBeamMaxDistance = kShuttleDistance; -const int kEnergyBeamMinDistance = 40; - -const int kGravitonMaxDistance = kShuttleDistance; -const int kGravitonMinDistance = 40; - - class InventoryItem; class Mars; @@ -283,16 +61,6 @@ enum ShuttleWeaponSelection { kTractorBeam }; -const tRoomID kMars0A = 0; -const tRoomID kMars31South = 33; -const tRoomID kMars34 = 37; -const tRoomID kMars35 = 38; -const tRoomID kMars39 = 42; -const tRoomID kMars49 = 51; -const tRoomID kMars60 = 58; -const tRoomID kMarsMaze004 = 60; -const tRoomID kMarsMaze200 = 224; - class Mars : public Neighborhood { friend void robotTimerExpiredFunction(FunctionPtr *, void *); friend void lockThawTimerExpiredFunction(FunctionPtr *, void *); @@ -336,8 +104,6 @@ friend void marsTimerFunction(FunctionPtr *, void *); bool inColorMatchingGame(); - // TODO: Space chase functions - protected: enum { kMarsPrivatePodStorageOpenFlag, @@ -414,8 +180,11 @@ friend void marsTimerFunction(FunctionPtr *, void *); void startMarsTimer(TimeValue, TimeScale, MarsTimerCode); void marsTimerExpired(MarsTimerEvent &); void throwAwayMarsShuttle(); - - // TODO: Space chase functions + void startUpFromFinishedSpaceChase(); + void startUpFromSpaceChase(); + void transportToRobotShip(); + void spaceChaseClick(const Input &, const tHotSpotID); + void updateCursor(const Common::Point, const Hotspot *); Common::String getSoundSpotsName(); Common::String getNavMovieName(); @@ -450,11 +219,22 @@ friend void marsTimerFunction(FunctionPtr *, void *); Movie _leftDamageShuttleMovie; Movie _rightDamageShuttleMovie; ShuttleEnergyMeter _shuttleEnergyMeter; + Movie _planetMovie; + PlanetMover _planetMover; RobotShip _robotShip; + ShuttleHUD _shuttleHUD; + TractorBeam _tractorBeam; + SpaceJunk _junk; + EnergyBeam _energyBeam; + GravitonCannon _gravitonCannon; + Hotspot _energyChoiceSpot; + Hotspot _gravitonChoiceSpot; + Hotspot _tractorChoiceSpot; + Hotspot _shuttleViewSpot; + Hotspot _shuttleTransportSpot; + ShuttleWeaponSelection _weaponSelection; ScalingMovie _explosions; NotificationCallBack _explosionCallBack; - - // TODO: Space chase variables }; } // End of namespace Pegasus diff --git a/engines/pegasus/neighborhood/mars/planetmover.cpp b/engines/pegasus/neighborhood/mars/planetmover.cpp index 368c295e765a..2fa8a771f596 100755 --- a/engines/pegasus/neighborhood/mars/planetmover.cpp +++ b/engines/pegasus/neighborhood/mars/planetmover.cpp @@ -25,9 +25,10 @@ #include "pegasus/movie.h" #include "pegasus/pegasus.h" +#include "pegasus/neighborhood/mars/constants.h" #include "pegasus/neighborhood/mars/hermite.h" -#include "pegasus/neighborhood/mars/mars.h" #include "pegasus/neighborhood/mars/planetmover.h" +#include "pegasus/neighborhood/mars/shuttleenergymeter.h" namespace Pegasus { diff --git a/engines/pegasus/neighborhood/mars/robotship.cpp b/engines/pegasus/neighborhood/mars/robotship.cpp index 279bdd8365c1..862a8b2edd68 100755 --- a/engines/pegasus/neighborhood/mars/robotship.cpp +++ b/engines/pegasus/neighborhood/mars/robotship.cpp @@ -194,6 +194,7 @@ void RobotShip::moveRobotTo(tCoordType x, tCoordType y) { y = kNumSpriteRows * y / _shipRange.height(); _spritesMovie.setTime(40 * (x + y * kNumSpriteColumns)); + _spritesMovie.redrawMovieWorld(); } } diff --git a/engines/pegasus/neighborhood/mars/shuttleenergymeter.cpp b/engines/pegasus/neighborhood/mars/shuttleenergymeter.cpp index f16735d6a828..21bb1fb700a9 100755 --- a/engines/pegasus/neighborhood/mars/shuttleenergymeter.cpp +++ b/engines/pegasus/neighborhood/mars/shuttleenergymeter.cpp @@ -23,7 +23,7 @@ * */ -#include "pegasus/neighborhood/mars/mars.h" +#include "pegasus/neighborhood/mars/constants.h" #include "pegasus/neighborhood/mars/shuttleenergymeter.h" namespace Pegasus { diff --git a/engines/pegasus/neighborhood/mars/shuttlehud.cpp b/engines/pegasus/neighborhood/mars/shuttlehud.cpp index 71f5b1e2acfc..dfdb3818cbfc 100755 --- a/engines/pegasus/neighborhood/mars/shuttlehud.cpp +++ b/engines/pegasus/neighborhood/mars/shuttlehud.cpp @@ -24,7 +24,7 @@ */ #include "pegasus/pegasus.h" -#include "pegasus/neighborhood/mars/mars.h" +#include "pegasus/neighborhood/mars/constants.h" #include "pegasus/neighborhood/mars/robotship.h" #include "pegasus/neighborhood/mars/shuttlehud.h" diff --git a/engines/pegasus/neighborhood/mars/shuttlehud.h b/engines/pegasus/neighborhood/mars/shuttlehud.h index 7cab9ed107a2..dc1c7598b57c 100755 --- a/engines/pegasus/neighborhood/mars/shuttlehud.h +++ b/engines/pegasus/neighborhood/mars/shuttlehud.h @@ -34,7 +34,7 @@ namespace Pegasus { class ShuttleHUD : public DisplayElement, public Idler { public: ShuttleHUD(); - virtual ~ShuttleHUD(); + virtual ~ShuttleHUD() {} void showTargetGrid(); void hideTargetGrid(); diff --git a/engines/pegasus/neighborhood/mars/shuttleweapon.cpp b/engines/pegasus/neighborhood/mars/shuttleweapon.cpp index 799cca8bc0d1..14614d1c8719 100755 --- a/engines/pegasus/neighborhood/mars/shuttleweapon.cpp +++ b/engines/pegasus/neighborhood/mars/shuttleweapon.cpp @@ -23,6 +23,8 @@ * */ +#include "pegasus/neighborhood/mars/constants.h" +#include "pegasus/neighborhood/mars/robotship.h" #include "pegasus/neighborhood/mars/shuttleweapon.h" #include "pegasus/neighborhood/mars/spacejunk.h" diff --git a/engines/pegasus/neighborhood/mars/shuttleweapon.h b/engines/pegasus/neighborhood/mars/shuttleweapon.h index b43dc92eb573..c62cee1acc89 100755 --- a/engines/pegasus/neighborhood/mars/shuttleweapon.h +++ b/engines/pegasus/neighborhood/mars/shuttleweapon.h @@ -26,7 +26,7 @@ #ifndef PEGASUS_NEIGHBORHOOD_MARS_SHUTTLEWEAPON_H #define PEGASUS_NEIGHBORHOOD_MARS_SHUTTLEWEAPON_H -#include "pegasus/timers.h" +#include "pegasus/elements.h" #include "pegasus/neighborhood/mars/spacechase3d.h" namespace Pegasus { diff --git a/engines/pegasus/neighborhood/mars/spacechase3d.h b/engines/pegasus/neighborhood/mars/spacechase3d.h index 3f22ba68e4e9..1e145a1770ed 100755 --- a/engines/pegasus/neighborhood/mars/spacechase3d.h +++ b/engines/pegasus/neighborhood/mars/spacechase3d.h @@ -26,7 +26,7 @@ #ifndef PEGASUS_NEIGHBORHOOD_MARS_SPACECHASE3D_H #define PEGASUS_NEIGHBORHOOD_MARS_SPACECHASE3D_H -#include "pegasus/neighborhood/mars/mars.h" +#include "pegasus/neighborhood/mars/constants.h" namespace Pegasus { diff --git a/engines/pegasus/neighborhood/mars/spacejunk.cpp b/engines/pegasus/neighborhood/mars/spacejunk.cpp index 8c78db4050ec..8ae36cec0fe9 100755 --- a/engines/pegasus/neighborhood/mars/spacejunk.cpp +++ b/engines/pegasus/neighborhood/mars/spacejunk.cpp @@ -24,6 +24,7 @@ */ #include "pegasus/pegasus.h" +#include "pegasus/neighborhood/mars/mars.h" #include "pegasus/neighborhood/mars/spacejunk.h" namespace Pegasus { diff --git a/engines/pegasus/neighborhood/mars/spacejunk.h b/engines/pegasus/neighborhood/mars/spacejunk.h index d3315b0bd04a..ba5aa753e002 100755 --- a/engines/pegasus/neighborhood/mars/spacejunk.h +++ b/engines/pegasus/neighborhood/mars/spacejunk.h @@ -26,6 +26,8 @@ #ifndef PEGASUS_NEIGHBORHOOD_MARS_SPACEJUNK_H #define PEGASUS_NEIGHBORHOOD_MARS_SPACEJUNK_H +#include "pegasus/movie.h" +#include "pegasus/neighborhood/mars/constants.h" #include "pegasus/neighborhood/mars/spacechase3d.h" namespace Pegasus { diff --git a/engines/pegasus/neighborhood/mars/tractorbeam.cpp b/engines/pegasus/neighborhood/mars/tractorbeam.cpp index 5c04b25b042a..5ea63a093492 100755 --- a/engines/pegasus/neighborhood/mars/tractorbeam.cpp +++ b/engines/pegasus/neighborhood/mars/tractorbeam.cpp @@ -24,7 +24,7 @@ */ #include "pegasus/pegasus.h" -#include "pegasus/neighborhood/mars/mars.h" +#include "pegasus/neighborhood/mars/constants.h" #include "pegasus/neighborhood/mars/tractorbeam.h" namespace Pegasus { diff --git a/engines/pegasus/neighborhood/tsa/fulltsa.cpp b/engines/pegasus/neighborhood/tsa/fulltsa.cpp index 0ce533c05d57..3d19cc337097 100755 --- a/engines/pegasus/neighborhood/tsa/fulltsa.cpp +++ b/engines/pegasus/neighborhood/tsa/fulltsa.cpp @@ -33,7 +33,7 @@ #include "pegasus/neighborhood/caldoria/caldoria.h" #include "pegasus/neighborhood/norad/alpha/noradalpha.h" #include "pegasus/neighborhood/prehistoric/prehistoric.h" -#include "pegasus/neighborhood/mars/mars.h" +#include "pegasus/neighborhood/mars/constants.h" #include "pegasus/neighborhood/tsa/fulltsa.h" #include "pegasus/neighborhood/wsc/wsc.h" diff --git a/engines/pegasus/neighborhood/tsa/tinytsa.cpp b/engines/pegasus/neighborhood/tsa/tinytsa.cpp index 831ab08850d8..a2e2ef85f64e 100755 --- a/engines/pegasus/neighborhood/tsa/tinytsa.cpp +++ b/engines/pegasus/neighborhood/tsa/tinytsa.cpp @@ -29,7 +29,7 @@ #include "pegasus/ai/ai_area.h" #include "pegasus/items/biochips/aichip.h" #include "pegasus/items/biochips/opticalchip.h" -#include "pegasus/neighborhood/mars/mars.h" +#include "pegasus/neighborhood/mars/constants.h" #include "pegasus/neighborhood/norad/alpha/noradalpha.h" #include "pegasus/neighborhood/tsa/tinytsa.h" #include "pegasus/neighborhood/wsc/wsc.h"