From 3f69c195ae5824a7f3037add447cca40e8827e6c Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Fri, 28 Oct 2011 01:24:57 -0400 Subject: [PATCH] PEGASUS: Allow for initial support of the space chase It's not ready yet, but it's slowly becoming playable. For instance, scaling, the shuttle HUD, and the energy beam work on the first try which is nothing short of a miracle. This commit also moved around some Mars constants because the previous include setup did not work; I hope to make the other neighborhoods have a separate constants file too. --- engines/pegasus/items/biochips/mapimage.h | 2 +- engines/pegasus/neighborhood/mars/constants.h | 941 ++++++++++++ .../neighborhood/mars/gravitoncannon.h | 2 + engines/pegasus/neighborhood/mars/mars.cpp | 1278 ++++++++--------- engines/pegasus/neighborhood/mars/mars.h | 270 +--- .../pegasus/neighborhood/mars/planetmover.cpp | 3 +- .../pegasus/neighborhood/mars/robotship.cpp | 1 + .../neighborhood/mars/shuttleenergymeter.cpp | 2 +- .../pegasus/neighborhood/mars/shuttlehud.cpp | 2 +- .../pegasus/neighborhood/mars/shuttlehud.h | 2 +- .../neighborhood/mars/shuttleweapon.cpp | 2 + .../pegasus/neighborhood/mars/shuttleweapon.h | 2 +- .../pegasus/neighborhood/mars/spacechase3d.h | 2 +- .../pegasus/neighborhood/mars/spacejunk.cpp | 1 + engines/pegasus/neighborhood/mars/spacejunk.h | 2 + .../pegasus/neighborhood/mars/tractorbeam.cpp | 2 +- engines/pegasus/neighborhood/tsa/fulltsa.cpp | 2 +- engines/pegasus/neighborhood/tsa/tinytsa.cpp | 2 +- 18 files changed, 1585 insertions(+), 933 deletions(-) create mode 100755 engines/pegasus/neighborhood/mars/constants.h 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"