diff options
Diffstat (limited to 'engines/pegasus/constants.h')
-rwxr-xr-x | engines/pegasus/constants.h | 744 |
1 files changed, 744 insertions, 0 deletions
diff --git a/engines/pegasus/constants.h b/engines/pegasus/constants.h new file mode 100755 index 0000000000..cc096ddfb0 --- /dev/null +++ b/engines/pegasus/constants.h @@ -0,0 +1,744 @@ +/* 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_CONSTANTS_H +#define PEGASUS_CONSTANTS_H + +#include "common/endian.h" +#include "common/rect.h" + +#include "pegasus/types.h" + +namespace Pegasus { + +// TODO: Organize these + +const tGameID kGameIDNothing = -1; + +const tActorID kNoActorID = kGameIDNothing; +const tActorID kPlayerID = 0; +const tItemID kNoItemID = kGameIDNothing; +const tRoomID kNoRoomID = kGameIDNothing; +const tExtraID kNoExtraID = 0xFFFFFFFF; +const tNeighborhoodID kNoNeighborhoodID = kGameIDNothing; +const tAlternateID kNoAlternateID = 0; +const tGameMenuCommand kMenuCmdNoCommand = 0; + +const tHotSpotActivationID kActivateHotSpotAlways = 0; +const tHotSpotActivationID kActivateHotSpotNever = -1; + +const tItemState kNoItemState = -1; + +const tDirectionConstant kNoDirection = 0xFF; + +const tTurnDirection kNoTurn = 0xFF; +const tTurnDirection kTurnLeft = 0; +const tTurnDirection kTurnRight = 1; +const tTurnDirection kTurnUp = 2; +const tTurnDirection kTurnDown = 3; +const tTurnDirection kMaxTurns = 4; + +const tGameMode kNoMode = -1; +const tGameMode kModeNavigation = 0; +const tGameMode kLastGameShellMode = kModeNavigation; + +const tCanMoveForwardReason kCanMoveForward = 0; +const tCanMoveForwardReason kCantMoveBlocked = kCanMoveForward + 1; +const tCanMoveForwardReason kCantMoveDoorClosed = kCantMoveBlocked + 1; +const tCanMoveForwardReason kCantMoveDoorLocked = kCantMoveDoorClosed + 1; +const tCanMoveForwardReason kCantMoveLastReason = kCantMoveDoorLocked; + +const tCanTurnReason kCanTurn = 0; +const tCanTurnReason kCantTurnNoTurn = kCanTurn + 1; +const tCanTurnReason kCantTurnLastReason = kCantTurnNoTurn; + +const tCanOpenDoorReason kCanOpenDoor = 0; +const tCanOpenDoorReason kCantOpenNoDoor = kCanOpenDoor + 1; +const tCanOpenDoorReason kCantOpenLocked = kCantOpenNoDoor + 1; +const tCanOpenDoorReason kCantOpenAlreadyOpen = kCantOpenLocked + 1; +const tCanOpenDoorReason kCantOpenLastReason = kCantOpenAlreadyOpen; + +const tDisplayElementID kNoDisplayElement = -1; +const tDisplayElementID kHighestReservedElementID = -2; + +const tDisplayElementID kCursorID = kHighestReservedElementID; +const tDisplayElementID kLoadScreenID = kCursorID - 1; + +const tDisplayOrder kMinAvailableOrder = 0; +const tDisplayOrder kMaxAvailableOrder = 999998; +const tDisplayOrder kLoadScreenOrder = 900000; +const tDisplayOrder kCursorOrder = 1000000; + +const tHotSpotID kNoHotSpotID = -1; +const tHotSpotFlags kNoHotSpotFlags = 0; +const tHotSpotFlags kAllHotSpotFlags = ~kNoHotSpotFlags; + +const tNotificationFlags kNoNotificationFlags = 0; + +const tDisplayElementID kCurrentDragSpriteID = 1000; + +// TODO +//const Fixed kFixed1 = 1 << 16; +//const Fixed kFixedMinus1 = -1 << 16; + +const TimeScale kDefaultTimeScale = 600; + +// TODO +//const RGBColor kWhiteRGB = {0xFFFF, 0xFFFF, 0xFFFF}; + +// Ticks per second. + +const TimeScale kOneTickPerSecond = 1; +const TimeScale kTwoTicksPerSecond = 2; +const TimeScale kFifteenTicksPerSecond = 15; +const TimeScale kThirtyTicksPerSecond = 30; +const TimeScale kSixtyTicksPerSecond = 60; +const TimeScale kMovieTicksPerSecond = 600; + +// These times are in seconds. + +const TimeValue kOneSecond = 1; +const TimeValue kTwoSeconds = 2; +const TimeValue kThreeSeconds = 3; +const TimeValue kFourSeconds = 4; +const TimeValue kFiveSeconds = 5; +const TimeValue kSixSeconds = 6; +const TimeValue kSevenSeconds = 7; +const TimeValue kEightSeconds = 8; +const TimeValue kNineSeconds = 9; +const TimeValue kTenSeconds = 10; +const TimeValue kElevenSeconds = 11; +const TimeValue kTwelveSeconds = 12; +const TimeValue kThirteenSeconds = 13; +const TimeValue kFourteenSeconds = 14; +const TimeValue kFifteenSeconds = 15; +const TimeValue kSixteenSeconds = 16; +const TimeValue kSeventeenSeconds = 17; +const TimeValue kEighteenSeconds = 18; +const TimeValue kNineteenSeconds = 19; +const TimeValue kTwentySeconds = 20; +const TimeValue kThirtySeconds = 30; +const TimeValue kFortySeconds = 40; +const TimeValue kFiftySeconds = 50; +const TimeValue kSixtySeconds = 60; +const TimeValue kOneMinute = 60; +const TimeValue kTwoMinutes = kOneMinute * 2; +const TimeValue kThreeMinutes = kOneMinute * 3; +const TimeValue kFourMinutes = kOneMinute * 4; +const TimeValue kFiveMinutes = kOneMinute * 5; +const TimeValue kSixMinutes = kOneMinute * 6; +const TimeValue kSevenMinutes = kOneMinute * 7; +const TimeValue kEightMinutes = kOneMinute * 8; +const TimeValue kNineMinutes = kOneMinute * 9; +const TimeValue kTenMinutes = kOneMinute * 10; +const TimeValue kElevenMinutes = kOneMinute * 11; +const TimeValue kTwelveMinutes = kOneMinute * 12; +const TimeValue kThirteenMinutes = kOneMinute * 13; +const TimeValue kFourteenMinutes = kOneMinute * 14; +const TimeValue kFifteenMinutes = kOneMinute * 15; +const TimeValue kSixteenMinutes = kOneMinute * 16; +const TimeValue kSeventeenMinutes = kOneMinute * 17; +const TimeValue kEighteenMinutes = kOneMinute * 18; +const TimeValue kNineteenMinutes = kOneMinute * 19; +const TimeValue kTwentyMinutes = kOneMinute * 20; +const TimeValue kThirtyMinutes = kOneMinute * 30; +const TimeValue kFortyMinutes = kOneMinute * 40; +const TimeValue kFiftyMinutes = kOneMinute * 50; +const TimeValue kOneHour = kOneMinute * 60; +const TimeValue kTwoHours = kOneHour * 2; + +// Common times. + +const TimeValue kHalfSecondPerTwoTicks = kTwoTicksPerSecond / 2; +const TimeValue kHalfSecondPerThirtyTicks = kThirtyTicksPerSecond / 2; +const TimeValue kHalfSecondPerSixtyTicks = kSixtyTicksPerSecond / 2; + +const TimeValue kOneSecondPerTwoTicks = kTwoTicksPerSecond; +const TimeValue kOneSecondPerThirtyTicks = kThirtyTicksPerSecond; +const TimeValue kOneSecondPerSixtyTicks = kSixtyTicksPerSecond; + +const TimeValue kOneMinutePerFifteenTicks = kOneMinute * kFifteenTicksPerSecond; +const TimeValue kFiveMinutesPerFifteenTicks = kFiveMinutes * kFifteenTicksPerSecond; +const TimeValue kTenMinutesPerFifteenTicks = kTenMinutes * kFifteenTicksPerSecond; + +const TimeValue kOneMinutePerThirtyTicks = kOneMinute * kThirtyTicksPerSecond; +const TimeValue kFiveMinutesPerThirtyTicks = kFiveMinutes * kThirtyTicksPerSecond; +const TimeValue kTenMinutesPerThirtyTicks = kTenMinutes * kThirtyTicksPerSecond; + +const TimeValue kOneMinutePerSixtyTicks = kOneMinute * kSixtyTicksPerSecond; +const TimeValue kFiveMinutesPerSixtyTicks = kFiveMinutes * kSixtyTicksPerSecond; +const TimeValue kTenMinutesPerSixtyTicks = kTenMinutes * kSixtyTicksPerSecond; + +// Time in seconds you can hang around Caldoria without going to work... +const TimeValue kLateWarning2TimeLimit = kFiveMinutes; +const TimeValue kLateWarning3TimeLimit = kTenMinutes; + +const TimeValue kSinclairShootsTimeLimit = kThreeMinutes; +const TimeValue kCardBombCountDownTime = kTwelveSeconds; + +const TimeValue kOxyMaskFullTime = kThirtyMinutes; + +const TimeValue kTSAUncreatedTimeLimit = kFiveMinutes; +const TimeValue kRipTimeLimit = kTenMinutesPerFifteenTicks; +const TimeScale kRipTimeScale = kFifteenTicksPerSecond; + +const TimeValue kIntroTimeOut = kThirtySeconds; + +const TimeValue kMarsRobotPatienceLimit = kFifteenSeconds; +const TimeValue kLockFreezeTimeLmit = kFifteenSeconds; +const TimeValue kSpaceChaseTimeLimit = kTenMinutes; +const TimeValue kVacuumSurvivalTimeLimit = kThirtySeconds; +const TimeValue kColorMatchingTimeLimit = kFourMinutes; +const TimeScale kJunkTimeScale = kFifteenTicksPerSecond; +const TimeValue kJunkDropBaseTime = kFiveSeconds; +const TimeValue kJunkDropSlopTime = kThreeSeconds; +const TimeValue kJunkTravelTime = kTenSeconds * kJunkTimeScale; +const TimeValue kCollisionReboundTime = kOneSecond * kJunkTimeScale; +const TimeValue kWeaponReboundTime = kTwoSeconds * kJunkTimeScale; + +const TimeValue kGawkAtRobotTime = kTenSeconds; +const TimeValue kGawkAtRobotTime2 = kThirteenSeconds; +const TimeValue kPlasmaImpactTime = kTwoSeconds; + +const TimeValue kNoradAirMaskTimeLimit = kOneMinute + kFifteenSeconds; + +const tNotificationID kNeighborhoodNotificationID = 1; +const tNotificationID kLastNeighborhoodNotificationID = kNeighborhoodNotificationID; + +const tNotificationFlags kNeighborhoodMovieCompletedFlag = 1; +const tNotificationFlags kMoveForwardCompletedFlag = kNeighborhoodMovieCompletedFlag << 1; +const tNotificationFlags kStrideCompletedFlag = kMoveForwardCompletedFlag << 1; +const tNotificationFlags kTurnCompletedFlag = kStrideCompletedFlag << 1; +const tNotificationFlags kSpotCompletedFlag = kTurnCompletedFlag << 1; +const tNotificationFlags kDoorOpenCompletedFlag = kSpotCompletedFlag << 1; +const tNotificationFlags kExtraCompletedFlag = kDoorOpenCompletedFlag << 1; +const tNotificationFlags kSpotSoundCompletedFlag = kExtraCompletedFlag << 1; +const tNotificationFlags kDelayCompletedFlag = kSpotSoundCompletedFlag << 1; +const tNotificationFlags kActionRequestCompletedFlag = kDelayCompletedFlag << 1; +const tNotificationFlags kDeathExtraCompletedFlag = kActionRequestCompletedFlag << 1; +const tNotificationFlags kLastNeighborhoodNotificationFlag = kDeathExtraCompletedFlag; + +const tNotificationFlags kNeighborhoodFlags = kNeighborhoodMovieCompletedFlag | + kMoveForwardCompletedFlag | + kStrideCompletedFlag | + kTurnCompletedFlag | + kSpotCompletedFlag | + kDoorOpenCompletedFlag | + kExtraCompletedFlag | + kSpotSoundCompletedFlag | + kDelayCompletedFlag | + kActionRequestCompletedFlag | + kDeathExtraCompletedFlag; + +const uint32 kPegasusPrimeCreator = MKTAG('J', 'P', 'P', 'P'); +const uint32 kPegasusPrimeContinueType = MKTAG('P', 'P', 'C', 'T'); + +const uint32 kPegasusPrimeDisk1GameType = MKTAG('P', 'P', 'G', '1'); +const uint32 kPegasusPrimeDisk2GameType = MKTAG('P', 'P', 'G', '2'); +const uint32 kPegasusPrimeDisk3GameType = MKTAG('P', 'P', 'G', '3'); +const uint32 kPegasusPrimeDisk4GameType = MKTAG('P', 'P', 'G', '4'); + +// We only support one of the save versions; the rest are from betas +// and we are not supporting them. +const uint32 kPegasusPrimeVersion = 0x00009019; + +const char kNormalSave = 0; +const char kContinueSave = 1; + +// Display IDs. + +const tDisplayElementID kNavMovieID = 1; +const tDisplayElementID kTurnPushID = 2; + +const tDisplayElementID kMaxGameShellDisplayID = kTurnPushID; + +// Display ordering. + +const tDisplayOrder kNavLayer = 10000; +const tDisplayOrder kNavMovieOrder = kNavLayer; +const tDisplayOrder kTurnPushOrder = kNavMovieOrder + 1; + +///////////////////////////////////////////// +// +// Display IDs. + +const tDisplayElementID kScreenDimmerID = kMaxGameShellDisplayID + 1; +const tDisplayElementID kInterface1ID = kScreenDimmerID + 1; +const tDisplayElementID kInterface2ID = kInterface1ID + 1; +const tDisplayElementID kInterface3ID = kInterface2ID + 1; +const tDisplayElementID kInterface4ID = kInterface3ID + 1; +const tDisplayElementID kDateID = kInterface4ID + 1; +const tDisplayElementID kCompassID = kDateID + 1; +const tDisplayElementID kInventoryPushID = kCompassID + 1; +const tDisplayElementID kInventoryLidID = kInventoryPushID + 1; +const tDisplayElementID kBiochipPushID = kInventoryLidID + 1; +const tDisplayElementID kBiochipLidID = kBiochipPushID + 1; +const tDisplayElementID kEnergyBarID = kBiochipLidID + 1; +const tDisplayElementID kWarningLightID = kEnergyBarID + 1; +const tDisplayElementID kAILeftAreaID = kWarningLightID + 1; +const tDisplayElementID kAIMiddleAreaID = kAILeftAreaID + 1; +const tDisplayElementID kAIRightAreaID = kAIMiddleAreaID + 1; +const tDisplayElementID kAIMovieID = kAIRightAreaID + 1; +const tDisplayElementID kInventoryDropHighlightID = kAIMovieID + 1; +const tDisplayElementID kBiochipDropHighlightID = kInventoryDropHighlightID + 1; + +const tDisplayElementID kDraggingSpriteID = 1000; + +const tDisplayElementID kCroppedMovieID = 2000; + +const tDisplayElementID kNeighborhoodDisplayID = 3000; + +const tDisplayElementID kItemPictureBaseID = 5000; + +const tCoordType kNavAreaLeft = 64; +const tCoordType kNavAreaTop = 64; + +const tCoordType kBackground1Left = 0; +const tCoordType kBackground1Top = 64; + +const tCoordType kBackground2Left = 0; +const tCoordType kBackground2Top = 0; + +const tCoordType kBackground3Left = 576; +const tCoordType kBackground3Top = 64; + +const tCoordType kBackground4Left = 0; +const tCoordType kBackground4Top = 320; + +const tCoordType kOverviewControllerLeft = 540; +const tCoordType kOverviewControllerTop = 348; + +const tCoordType kSwapLeft = 194; +const tCoordType kSwapTop = 116; + +const tCoordType kSwapHiliteLeft = 200; +const tCoordType kSwapHiliteTop = 206; + +const tCoordType kDateLeft = 136; +const tCoordType kDateTop = 44; + +const tCoordType kCompassLeft = 222; +const tCoordType kCompassTop = 42; +const tCoordType kCompassWidth = 92; + +const tCoordType kInventoryPushLeft = 74; +const tCoordType kInventoryPushTop = 92; + +const tCoordType kInventoryLidLeft = 74; +const tCoordType kInventoryLidTop = 316; + +const tCoordType kBiochipPushLeft = 362; +const tCoordType kBiochipPushTop = 192; + +const tCoordType kBiochipLidLeft = 362; +const tCoordType kBiochipLidTop = 316; + +// TODO: Remove global variable needs +//const Common::Rect kInventoryHiliteBounds(334, 76, 430, 172); +//const Common::Rect kBiochipHiliteBounds (334, 364, 430, 460); + +const tCoordType kInventoryDropLeft = 0; +const tCoordType kInventoryDropTop = 320; +const tCoordType kInventoryDropRight = 232; +const tCoordType kInventoryDropBottom = 480; + +const tCoordType kBiochipDropLeft = 302; +const tCoordType kBiochipDropTop = 320; +const tCoordType kBiochipDropRight = 640; +const tCoordType kBiochipDropBottom = 480; + +const tCoordType kFinalMessageLeft = kInventoryPushLeft + 1; +const tCoordType kFinalMessageTop = kInventoryPushTop + 24; + +///////////////////////////////////////////// +// +// Notifications. + +const tNotificationID kJMPDCShellNotificationID = kLastNeighborhoodNotificationID + 1; +const tNotificationID kInterfaceNotificationID = kJMPDCShellNotificationID + 1; +const tNotificationID kAINotificationID = kInterfaceNotificationID + 1; +const tNotificationID kNoradNotificationID = kAINotificationID + 1; +const tNotificationID kNoradECRNotificationID = kNoradNotificationID + 1; +const tNotificationID kNoradFillingStationNotificationID = kNoradECRNotificationID + 1; +const tNotificationID kNoradPressureNotificationID = kNoradFillingStationNotificationID + 1; +const tNotificationID kNoradUtilityNotificationID = kNoradPressureNotificationID + 1; +const tNotificationID kNoradElevatorNotificationID = kNoradUtilityNotificationID + 1; +const tNotificationID kNoradSubPlatformNotificationID = kNoradElevatorNotificationID + 1; +const tNotificationID kSubControlNotificationID = kNoradSubPlatformNotificationID + 1; +const tNotificationID kNoradGreenBallNotificationID = kSubControlNotificationID + 1; +const tNotificationID kNoradGlobeNotificationID = kNoradGreenBallNotificationID + 1; +const tNotificationID kCaldoriaVidPhoneNotificationID = kNoradGlobeNotificationID + 1; +const tNotificationID kCaldoriaMessagesNotificationID = kCaldoriaVidPhoneNotificationID + 1; +const tNotificationID kCaldoriaBombTimerNotificationID = kCaldoriaMessagesNotificationID + 1; + +// Sent to the shell by fShellNotification. +const tNotificationFlags kGameStartingFlag = 1; +const tNotificationFlags kNeedNewJumpFlag = kGameStartingFlag << 1; +const tNotificationFlags kPlayerDiedFlag = kNeedNewJumpFlag << 1; + +const tNotificationFlags kJMPShellNotificationFlags = kGameStartingFlag | + kNeedNewJumpFlag | + kPlayerDiedFlag; + +// Sent to the interface. +const tNotificationFlags kInventoryLidOpenFlag = 1; +const tNotificationFlags kInventoryLidClosedFlag = kInventoryLidOpenFlag << 1; +const tNotificationFlags kInventoryDrawerUpFlag = kInventoryLidClosedFlag << 1; +const tNotificationFlags kInventoryDrawerDownFlag = kInventoryDrawerUpFlag << 1; +const tNotificationFlags kBiochipLidOpenFlag = kInventoryDrawerDownFlag << 1; +const tNotificationFlags kBiochipLidClosedFlag = kBiochipLidOpenFlag << 1; +const tNotificationFlags kBiochipDrawerUpFlag = kBiochipLidClosedFlag << 1; +const tNotificationFlags kBiochipDrawerDownFlag = kBiochipDrawerUpFlag << 1; + +const tNotificationFlags kInterfaceNotificationFlags = kInventoryLidOpenFlag | + kInventoryLidClosedFlag | + kInventoryDrawerUpFlag | + kInventoryDrawerDownFlag | + kBiochipLidOpenFlag | + kBiochipLidClosedFlag | + kBiochipDrawerUpFlag | + kBiochipDrawerDownFlag; + +// Hot spots. + +// Neighborhood hot spots. + +const tHotSpotID kFirstNeighborhoodSpotID = 5000; + +// kShellSpotFlag is a flag which marks all hot spots which belong to the shell, like +// the current item and current biochip spots. +const tHotSpotFlags kShellSpotFlag = 1; +// kNeighborhoodSpotFlag is a flag which marks all hot spots which belong to a +// neighborhood, like buttons on walls and so on. +const tHotSpotFlags kNeighborhoodSpotFlag = kShellSpotFlag << 1; +// kZoomInSpotFlag is a flag which marks all hot spots which indicate a zoom. +const tHotSpotFlags kZoomInSpotFlag = kNeighborhoodSpotFlag << 1; +// kZoomOutSpotFlag is a flag which marks all hot spots which indicate a zoom. +const tHotSpotFlags kZoomOutSpotFlag = kZoomInSpotFlag << 1; + +const tHotSpotFlags kClickSpotFlag = kZoomOutSpotFlag << 1; +const tHotSpotFlags kPlayExtraSpotFlag = kClickSpotFlag << 1; +const tHotSpotFlags kPickUpItemSpotFlag = kPlayExtraSpotFlag << 1; +const tHotSpotFlags kDropItemSpotFlag = kPickUpItemSpotFlag << 1; +const tHotSpotFlags kOpenDoorSpotFlag = kDropItemSpotFlag << 1; + +const tHotSpotFlags kZoomSpotFlags = kZoomInSpotFlag | kZoomOutSpotFlag; + +const tHotSpotFlags kHighestGameShellSpotFlag = kOpenDoorSpotFlag; + +///////////////////////////////////////////// +// +// Hot spots. + +// Shell hot spots. +// The shell reserves all hot spot IDs from 0 to 999 + +const tHotSpotID kCurrentItemSpotID = 0; +const tHotSpotID kCurrentBiochipSpotID = kCurrentItemSpotID + 1; + +const tHotSpotID kInventoryDropSpotID = kCurrentBiochipSpotID + 1; +const tHotSpotID kBiochipDropSpotID = kInventoryDropSpotID + 1; + +const tHotSpotID kInfoReturnSpotID = kBiochipDropSpotID + 1; + +const tHotSpotID kAIHint1SpotID = kInfoReturnSpotID + 1; +const tHotSpotID kAIHint2SpotID = kAIHint1SpotID + 1; +const tHotSpotID kAIHint3SpotID = kAIHint2SpotID + 1; +const tHotSpotID kAISolveSpotID = kAIHint3SpotID + 1; +const tHotSpotID kAIBriefingSpotID = kAISolveSpotID + 1; +const tHotSpotID kAIScanSpotID = kAIBriefingSpotID + 1; + +const tHotSpotID kPegasusRecallSpotID = kAIScanSpotID + 1; + +const tHotSpotID kAriesSpotID = kPegasusRecallSpotID + 1; +const tHotSpotID kMercurySpotID = kAriesSpotID + 1; +const tHotSpotID kPoseidonSpotID = kMercurySpotID + 1; + +const tHotSpotID kAirMaskToggleSpotID = kPoseidonSpotID + 1; + +const tHotSpotID kShuttleEnergySpotID = kAirMaskToggleSpotID + 1; +const tHotSpotID kShuttleGravitonSpotID = kShuttleEnergySpotID + 1; +const tHotSpotID kShuttleTractorSpotID = kShuttleGravitonSpotID + 1; +const tHotSpotID kShuttleViewSpotID = kShuttleTractorSpotID + 1; +const tHotSpotID kShuttleTransportSpotID = kShuttleViewSpotID + 1; + +// Most of these are obsolete: + +// kInventoryDropSpotFlag is a flag which marks hot spots which are valid drop spots +// for inventory items. +// const tHotSpotFlags kInventoryDropSpotFlag = kHighestGameShellSpotFlag << 1; + +// kBiochipDropSpotFlag is a flag which marks hot spots which are valid drop spots +// for biochips. +// const tHotSpotFlags kBiochipDropSpotFlag = kInventoryDropSpotFlag << 1; + +// kInventorySpotFlag is a flag which marks hot spots which indicate inventory items +// in the environment. +// const tHotSpotFlags kInventorySpotFlag = kBiochipDropSpotFlag << 1; + +// kBiochipSpotFlag is a flag which marks hot spots which indicate biochips +// in the environment. +const tHotSpotFlags kPickUpBiochipSpotFlag = kHighestGameShellSpotFlag << 1; +const tHotSpotFlags kDropBiochipSpotFlag = kPickUpBiochipSpotFlag << 1; + +const tHotSpotFlags kInfoReturnSpotFlag = kDropBiochipSpotFlag << 1; + +// Biochip and inventory hot spot flags... + +const tHotSpotFlags kAIBiochipSpotFlag = kInfoReturnSpotFlag << 1; +const tHotSpotFlags kPegasusBiochipSpotFlag = kAIBiochipSpotFlag << 1; +const tHotSpotFlags kOpticalBiochipSpotFlag = kPegasusBiochipSpotFlag << 1; +const tHotSpotFlags kAirMaskSpotFlag = kOpticalBiochipSpotFlag << 1; + +const tHotSpotFlags kJMPClickingSpotFlags = kClickSpotFlag | + kPlayExtraSpotFlag | + kOpenDoorSpotFlag | + kInfoReturnSpotFlag | + kAIBiochipSpotFlag | + kPegasusBiochipSpotFlag | + kOpticalBiochipSpotFlag | + kAirMaskSpotFlag; + +const tMM32BitID kMainMenuID = 1; +const tMM32BitID kPauseMenuID = 2; +const tMM32BitID kCreditsMenuID = 3; +const tMM32BitID kDeathMenuID = 4; + +///////////////////////////////////////////// +// +// Menu commands. + +const tGameMenuCommand kMenuCmdOverview = kMenuCmdNoCommand + 1; +const tGameMenuCommand kMenuCmdStartAdventure = kMenuCmdOverview + 1; +const tGameMenuCommand kMenuCmdStartWalkthrough = kMenuCmdStartAdventure + 1; +const tGameMenuCommand kMenuCmdRestore = kMenuCmdStartWalkthrough + 1; +const tGameMenuCommand kMenuCmdCredits = kMenuCmdRestore + 1; +const tGameMenuCommand kMenuCmdQuit = kMenuCmdCredits + 1; + +const tGameMenuCommand kMenuCmdDeathContinue = kMenuCmdQuit + 1; + +const tGameMenuCommand kMenuCmdDeathQuitDemo = kMenuCmdDeathContinue + 1; +const tGameMenuCommand kMenuCmdDeathMainMenuDemo = kMenuCmdDeathQuitDemo + 1; + +const tGameMenuCommand kMenuCmdDeathRestore = kMenuCmdDeathMainMenuDemo + 1; +const tGameMenuCommand kMenuCmdDeathMainMenu = kMenuCmdDeathRestore + 1; + +const tGameMenuCommand kMenuCmdPauseSave = kMenuCmdDeathMainMenu + 1; +const tGameMenuCommand kMenuCmdPauseContinue = kMenuCmdPauseSave + 1; +const tGameMenuCommand kMenuCmdPauseRestore = kMenuCmdPauseContinue + 1; +const tGameMenuCommand kMenuCmdPauseQuit = kMenuCmdPauseRestore + 1; + +const tGameMenuCommand kMenuCmdCreditsMainMenu = kMenuCmdPauseQuit + 1; + +const tGameMenuCommand kMenuCmdCancelRestart = kMenuCmdCreditsMainMenu + 1; +const tGameMenuCommand kMenuCmdEjectRestart = kMenuCmdCancelRestart + 1; + +const TimeValue kMenuButtonHiliteTime = 20; +const TimeScale kMenuButtonHiliteScale = kSixtyTicksPerSecond; + +// PICT resources: + +// Warning light PICTs: + +const tResIDType kLightOffID = 128; +const tResIDType kLightYellowID = 129; +const tResIDType kLightOrangeID = 130; +const tResIDType kLightRedID = 131; + +// Date PICTs: + +const tResIDType kDatePrehistoricID = 138; +const tResIDType kDate2112ID = 139; +const tResIDType kDate2185ID = 140; +const tResIDType kDate2310ID = 141; +const tResIDType kDate2318ID = 142; + +///////////////////////////////////////////// +// +// Display Order + +const tDisplayOrder kCroppedMovieLayer = 11000; + +const tDisplayOrder kMonitorLayer = 12000; + +const tDisplayOrder kDragSpriteLayer = 15000; +const tDisplayOrder kDragSpriteOrder = kDragSpriteLayer; + +const tDisplayOrder kInterfaceLayer = 20000; +const tDisplayOrder kBackground1Order = kInterfaceLayer; +const tDisplayOrder kBackground2Order = kBackground1Order + 1; +const tDisplayOrder kBackground3Order = kBackground2Order + 1; +const tDisplayOrder kBackground4Order = kBackground3Order + 1; +const tDisplayOrder kDateOrder = kBackground4Order + 1; +const tDisplayOrder kCompassOrder = kDateOrder + 1; +const tDisplayOrder kEnergyBarOrder = kCompassOrder + 1; +const tDisplayOrder kEnergyLightOrder = kEnergyBarOrder + 1; + +const tDisplayOrder kAILayer = 22000; +const tDisplayOrder kAILeftAreaOrder = kAILayer; +const tDisplayOrder kAIMiddleAreaOrder = kAILeftAreaOrder + 1; +const tDisplayOrder kAIRightAreaOrder = kAIMiddleAreaOrder + 1; +const tDisplayOrder kAIMovieOrder = kAIRightAreaOrder + 1; + +const tDisplayOrder kHilitesLayer = 23000; +const tDisplayOrder kInventoryHiliteOrder = kHilitesLayer; +const tDisplayOrder kBiochipHiliteOrder = kInventoryHiliteOrder + 1; + +const tDisplayOrder kPanelsLayer = 25000; +const tDisplayOrder kInventoryPushOrder = kPanelsLayer; +const tDisplayOrder kInventoryLidOrder = kInventoryPushOrder + 1; +const tDisplayOrder kBiochipPushOrder = kInventoryLidOrder + 1; +const tDisplayOrder kBiochipLidOrder = kBiochipPushOrder + 1; +const tDisplayOrder kFinalMessageOrder = kBiochipLidOrder + 1; + +const tDisplayOrder kInfoLayer = 26000; +const tDisplayOrder kInfoBackgroundOrder = kInfoLayer; +const tDisplayOrder kInfoSpinOrder = kInfoBackgroundOrder + 1; + +const tDisplayOrder kScreenDimmerOrder = 30000; + +const tDisplayOrder kPauseScreenLayer = 31000; +const tDisplayOrder kPauseMenuOrder = kPauseScreenLayer; +const tDisplayOrder kSaveGameOrder = kPauseMenuOrder + 1; +const tDisplayOrder kContinueOrder = kSaveGameOrder + 1; +const tDisplayOrder kRestoreOrder = kContinueOrder + 1; +const tDisplayOrder kSoundFXOrder = kRestoreOrder + 1; +const tDisplayOrder kAmbienceOrder = kSoundFXOrder + 1; +const tDisplayOrder kWalkthruOrder = kAmbienceOrder + 1; +const tDisplayOrder kQuitToMainMenuOrder = kWalkthruOrder + 1; +const tDisplayOrder kPauseLargeHiliteOrder = kQuitToMainMenuOrder + 1; +const tDisplayOrder kPauseSmallHiliteOrder = kPauseLargeHiliteOrder + 1; + +///////////////////////////////////////////// +// +// Death reasons. +enum { + // Caldoria + kDeathUncreatedInCaldoria = 1, + kDeathCardBomb, + kDeathShotBySinclair, + kDeathSinclairShotDelegate, + kDeathNuclearExplosion, + + // TSA + kDeathUncreatedInTSA, + kDeathShotByTSARobots, + + // Prehistoric + kDeathFallOffCliff, + kDeathEatenByDinosaur, + kDeathStranded, + + // Norad + kDeathGassedInNorad, + kDeathArrestedInNorad, + kDeathWokeUpNorad, + kDeathSubDestroyed, // Unused + kDeathRobotThroughNoradDoor, + kDeathRobotSubControlRoom, + + // Mars + kDeathWrongShuttleLock, + kDeathArrestedInMars, + kDeathRunOverByPod, + kDeathDidntGetOutOfWay, + kDeathReactorBurn, + kDeathDidntFindMarsBomb, + kDeathDidntDisarmMarsBomb, + kDeathNoMaskInMaze, + kDeathNoAirInMaze, + kDeathGroundByMazebot, + kDeathMissedOreBucket, + kDeathDidntLeaveBucket, + kDeathRanIntoCanyonWall, // Unused + kDeathRanIntoSpaceJunk, + + // WSC + kDeathDidntStopPoison, + kDeathArrestedInWSC, + kDeathHitByPlasma, + kDeathShotOnCatwalk, + + // Winning + kPlayerWonGame +}; + +static const tCoordType kAILeftAreaLeft = 76; +static const tCoordType kAILeftAreaTop = 334; + +static const tCoordType kAILeftAreaWidth = 96; +static const tCoordType kAILeftAreaHeight = 96; + +static const tCoordType kAIMiddleAreaLeft = 172; +static const tCoordType kAIMiddleAreaTop = 334; + +static const tCoordType kAIMiddleAreaWidth = 192; +static const tCoordType kAIMiddleAreaHeight = 96; + +static const tCoordType kAIRightAreaLeft = 364; +static const tCoordType kAIRightAreaTop = 334; + +static const tCoordType kAIRightAreaWidth = 96; +static const tCoordType kAIRightAreaHeight = 96; + +enum { + kTSAPlayerNotArrived, // initial state, must be zero + kTSAPlayerForcedReview, // Player must watch TBP before rip occurs. + kTSAPlayerDetectedRip, // Player finished TBP, rip alarm just went off. + kTSAPlayerNeedsHistoricalLog, // Player is instructed to get historical log + kTSAPlayerGotHistoricalLog, + kTSAPlayerInstalledHistoricalLog, + kTSABossSawHistoricalLog, + kRobotsAtCommandCenter, + kRobotsAtFrontDoor, + kRobotsAtReadyRoom, + kPlayerLockedInPegasus, + kPlayerOnWayToPrehistoric, + kPlayerWentToPrehistoric, + kPlayerOnWayToNorad, + kPlayerOnWayToMars, + kPlayerOnWayToWSC, + kPlayerFinishedWithTSA +}; + +static const tDirectionConstant kNorth = 0; +static const tDirectionConstant kSouth = 1; +static const tDirectionConstant kEast = 2; +static const tDirectionConstant kWest = 3; + +///////////////////////////////////////////// +// +// Mode constants. + +static const tGameMode kModeInventoryPick = kLastGameShellMode + 1; +static const tGameMode kModeBiochipPick = kModeInventoryPick + 1; +static const tGameMode kModeInfoScreen = kModeBiochipPick + 1; + +// TODO: Remove me +static const tRoomID kNorad41 = 0; + +} // End of namespace Pegasus + +#endif |