ScummVM API documentation
constants.h
1/* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * Additional copyright for this file:
8 * Copyright (C) 1995-1997 Presto Studios, Inc.
9 *
10 * This program is free software: you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation, either version 3 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <http://www.gnu.org/licenses/>.
22 *
23 */
24
25#ifndef PEGASUS_CONSTANTS_H
26#define PEGASUS_CONSTANTS_H
27
28#include "common/endian.h"
29#include "common/rect.h"
30
31#include "pegasus/types.h"
32
33namespace Pegasus {
34
35// TODO: Organize these
36
37static const GameID kGameIDNothing = -1;
38
39static const ActorID kNoActorID = kGameIDNothing;
40static const ActorID kPlayerID = 0;
41static const ItemID kNoItemID = kGameIDNothing;
42static const RoomID kNoRoomID = kGameIDNothing;
43static const ExtraID kNoExtraID = 0xFFFFFFFF;
44static const NeighborhoodID kNoNeighborhoodID = kGameIDNothing;
45static const AlternateID kNoAlternateID = 0;
46static const GameMenuCommand kMenuCmdNoCommand = 0;
47
48static const HotSpotActivationID kActivateHotSpotAlways = 0;
49static const HotSpotActivationID kActivateHotSpotNever = -1;
50
51static const ItemState kNoItemState = -1;
52
53static const DirectionConstant kNoDirection = 0xFF;
54static const DirectionConstant kNorth = 0;
55static const DirectionConstant kSouth = 1;
56static const DirectionConstant kEast = 2;
57static const DirectionConstant kWest = 3;
58
59static const TurnDirection kNoTurn = 0xFF;
60static const TurnDirection kTurnLeft = 0;
61static const TurnDirection kTurnRight = 1;
62static const TurnDirection kTurnUp = 2;
63static const TurnDirection kTurnDown = 3;
64static const TurnDirection kMaxTurns = 4;
65
66static const GameMode kNoMode = -1;
67static const GameMode kModeNavigation = 0;
68static const GameMode kLastGameShellMode = kModeNavigation;
69
70static const CanMoveForwardReason kCanMoveForward = 0;
71static const CanMoveForwardReason kCantMoveBlocked = kCanMoveForward + 1;
72static const CanMoveForwardReason kCantMoveDoorClosed = kCantMoveBlocked + 1;
73static const CanMoveForwardReason kCantMoveDoorLocked = kCantMoveDoorClosed + 1;
74static const CanMoveForwardReason kCantMoveLastReason = kCantMoveDoorLocked;
75
76static const CanTurnReason kCanTurn = 0;
77static const CanTurnReason kCantTurnNoTurn = kCanTurn + 1;
78static const CanTurnReason kCantTurnLastReason = kCantTurnNoTurn;
79
80static const CanOpenDoorReason kCanOpenDoor = 0;
81static const CanOpenDoorReason kCantOpenNoDoor = kCanOpenDoor + 1;
82static const CanOpenDoorReason kCantOpenLocked = kCantOpenNoDoor + 1;
83static const CanOpenDoorReason kCantOpenAlreadyOpen = kCantOpenLocked + 1;
84static const CanOpenDoorReason kCantOpenLastReason = kCantOpenAlreadyOpen;
85
86static const DisplayElementID kNoDisplayElement = -1;
87static const DisplayElementID kHighestReservedElementID = -2;
88
89static const DisplayElementID kCursorID = kHighestReservedElementID;
90static const DisplayElementID kLoadScreenID = kCursorID - 1;
91
92static const DisplayOrder kMinAvailableOrder = 0;
93static const DisplayOrder kMaxAvailableOrder = 999998;
94static const DisplayOrder kLoadScreenOrder = 900000;
95static const DisplayOrder kCursorOrder = 1000000;
96
97static const HotSpotID kNoHotSpotID = -1;
98static const HotSpotFlags kNoHotSpotFlags = 0;
99static const HotSpotFlags kAllHotSpotFlags = ~kNoHotSpotFlags;
100
101static const NotificationFlags kNoNotificationFlags = 0;
102
103static const DisplayElementID kCurrentDragSpriteID = 1000;
104
105static const TimeScale kDefaultTimeScale = 600;
106
107// Ticks per second.
108
109static const TimeScale kOneTickPerSecond = 1;
110static const TimeScale kTwoTicksPerSecond = 2;
111static const TimeScale kFifteenTicksPerSecond = 15;
112static const TimeScale kThirtyTicksPerSecond = 30;
113static const TimeScale kSixtyTicksPerSecond = 60;
114static const TimeScale kMovieTicksPerSecond = 600;
115
116// These times are in seconds.
117
118static const TimeValue kOneSecond = 1;
119static const TimeValue kTwoSeconds = 2;
120static const TimeValue kThreeSeconds = 3;
121static const TimeValue kFourSeconds = 4;
122static const TimeValue kFiveSeconds = 5;
123static const TimeValue kSixSeconds = 6;
124static const TimeValue kSevenSeconds = 7;
125static const TimeValue kEightSeconds = 8;
126static const TimeValue kNineSeconds = 9;
127static const TimeValue kTenSeconds = 10;
128static const TimeValue kElevenSeconds = 11;
129static const TimeValue kTwelveSeconds = 12;
130static const TimeValue kThirteenSeconds = 13;
131static const TimeValue kFourteenSeconds = 14;
132static const TimeValue kFifteenSeconds = 15;
133static const TimeValue kSixteenSeconds = 16;
134static const TimeValue kSeventeenSeconds = 17;
135static const TimeValue kEighteenSeconds = 18;
136static const TimeValue kNineteenSeconds = 19;
137static const TimeValue kTwentySeconds = 20;
138static const TimeValue kThirtySeconds = 30;
139static const TimeValue kFortySeconds = 40;
140static const TimeValue kFiftySeconds = 50;
141static const TimeValue kSixtySeconds = 60;
142static const TimeValue kOneMinute = 60;
143static const TimeValue kTwoMinutes = kOneMinute * 2;
144static const TimeValue kThreeMinutes = kOneMinute * 3;
145static const TimeValue kFourMinutes = kOneMinute * 4;
146static const TimeValue kFiveMinutes = kOneMinute * 5;
147static const TimeValue kSixMinutes = kOneMinute * 6;
148static const TimeValue kSevenMinutes = kOneMinute * 7;
149static const TimeValue kEightMinutes = kOneMinute * 8;
150static const TimeValue kNineMinutes = kOneMinute * 9;
151static const TimeValue kTenMinutes = kOneMinute * 10;
152static const TimeValue kElevenMinutes = kOneMinute * 11;
153static const TimeValue kTwelveMinutes = kOneMinute * 12;
154static const TimeValue kThirteenMinutes = kOneMinute * 13;
155static const TimeValue kFourteenMinutes = kOneMinute * 14;
156static const TimeValue kFifteenMinutes = kOneMinute * 15;
157static const TimeValue kSixteenMinutes = kOneMinute * 16;
158static const TimeValue kSeventeenMinutes = kOneMinute * 17;
159static const TimeValue kEighteenMinutes = kOneMinute * 18;
160static const TimeValue kNineteenMinutes = kOneMinute * 19;
161static const TimeValue kTwentyMinutes = kOneMinute * 20;
162static const TimeValue kThirtyMinutes = kOneMinute * 30;
163static const TimeValue kFortyMinutes = kOneMinute * 40;
164static const TimeValue kFiftyMinutes = kOneMinute * 50;
165static const TimeValue kOneHour = kOneMinute * 60;
166static const TimeValue kTwoHours = kOneHour * 2;
167
168// Common times.
169
170static const TimeValue kHalfSecondPerTwoTicks = kTwoTicksPerSecond / 2;
171static const TimeValue kHalfSecondPerThirtyTicks = kThirtyTicksPerSecond / 2;
172static const TimeValue kHalfSecondPerSixtyTicks = kSixtyTicksPerSecond / 2;
173
174static const TimeValue kOneSecondPerTwoTicks = kTwoTicksPerSecond;
175static const TimeValue kOneSecondPerThirtyTicks = kThirtyTicksPerSecond;
176static const TimeValue kOneSecondPerSixtyTicks = kSixtyTicksPerSecond;
177
178static const TimeValue kOneMinutePerFifteenTicks = kOneMinute * kFifteenTicksPerSecond;
179static const TimeValue kFiveMinutesPerFifteenTicks = kFiveMinutes * kFifteenTicksPerSecond;
180static const TimeValue kTenMinutesPerFifteenTicks = kTenMinutes * kFifteenTicksPerSecond;
181
182static const TimeValue kOneMinutePerThirtyTicks = kOneMinute * kThirtyTicksPerSecond;
183static const TimeValue kFiveMinutesPerThirtyTicks = kFiveMinutes * kThirtyTicksPerSecond;
184static const TimeValue kTenMinutesPerThirtyTicks = kTenMinutes * kThirtyTicksPerSecond;
185
186static const TimeValue kOneMinutePerSixtyTicks = kOneMinute * kSixtyTicksPerSecond;
187static const TimeValue kFiveMinutesPerSixtyTicks = kFiveMinutes * kSixtyTicksPerSecond;
188static const TimeValue kTenMinutesPerSixtyTicks = kTenMinutes * kSixtyTicksPerSecond;
189
190// Time in seconds you can hang around Caldoria without going to work...
191static const TimeValue kLateWarning2TimeLimit = kFiveMinutes;
192static const TimeValue kLateWarning3TimeLimit = kTenMinutes;
193
194static const TimeValue kSinclairShootsTimeLimit = kThreeMinutes;
195static const TimeValue kCardBombCountDownTime = kTwelveSeconds;
196
197static const TimeValue kOxyMaskFullTime = kThirtyMinutes;
198
199static const TimeValue kTSAUncreatedTimeLimit = kFiveMinutes;
200static const TimeValue kRipTimeLimit = kTenMinutesPerFifteenTicks;
201static const TimeScale kRipTimeScale = kFifteenTicksPerSecond;
202
203static const TimeValue kIntroTimeOut = kThirtySeconds;
204
205static const TimeValue kMarsRobotPatienceLimit = kFifteenSeconds;
206static const TimeValue kLockFreezeTimeLmit = kFifteenSeconds;
207static const TimeValue kSpaceChaseTimeLimit = kTenMinutes;
208static const TimeValue kVacuumSurvivalTimeLimit = kThirtySeconds;
209static const TimeValue kColorMatchingTimeLimit = kFourMinutes;
210static const TimeScale kJunkTimeScale = kFifteenTicksPerSecond;
211static const TimeValue kJunkDropBaseTime = kFiveSeconds;
212static const TimeValue kJunkDropSlopTime = kThreeSeconds;
213static const TimeValue kJunkTravelTime = kTenSeconds * kJunkTimeScale;
214static const TimeValue kCollisionReboundTime = kOneSecond * kJunkTimeScale;
215static const TimeValue kWeaponReboundTime = kTwoSeconds * kJunkTimeScale;
216
217static const TimeValue kGawkAtRobotTime = kTenSeconds;
218static const TimeValue kGawkAtRobotTime2 = kThirteenSeconds;
219static const TimeValue kPlasmaImpactTime = kTwoSeconds;
220
221static const TimeValue kNoradAirMaskTimeLimit = kOneMinute + kFifteenSeconds;
222
223static const NotificationID kNeighborhoodNotificationID = 1;
224static const NotificationID kLastNeighborhoodNotificationID = kNeighborhoodNotificationID;
225
226static const NotificationFlags kNeighborhoodMovieCompletedFlag = 1;
227static const NotificationFlags kMoveForwardCompletedFlag = kNeighborhoodMovieCompletedFlag << 1;
228static const NotificationFlags kStrideCompletedFlag = kMoveForwardCompletedFlag << 1;
229static const NotificationFlags kTurnCompletedFlag = kStrideCompletedFlag << 1;
230static const NotificationFlags kSpotCompletedFlag = kTurnCompletedFlag << 1;
231static const NotificationFlags kDoorOpenCompletedFlag = kSpotCompletedFlag << 1;
232static const NotificationFlags kExtraCompletedFlag = kDoorOpenCompletedFlag << 1;
233static const NotificationFlags kSpotSoundCompletedFlag = kExtraCompletedFlag << 1;
234static const NotificationFlags kDelayCompletedFlag = kSpotSoundCompletedFlag << 1;
235static const NotificationFlags kActionRequestCompletedFlag = kDelayCompletedFlag << 1;
236static const NotificationFlags kDeathExtraCompletedFlag = kActionRequestCompletedFlag << 1;
237static const NotificationFlags kLastNeighborhoodNotificationFlag = kDeathExtraCompletedFlag;
238
239static const NotificationFlags kNeighborhoodFlags = kNeighborhoodMovieCompletedFlag |
240 kMoveForwardCompletedFlag |
241 kStrideCompletedFlag |
242 kTurnCompletedFlag |
243 kSpotCompletedFlag |
244 kDoorOpenCompletedFlag |
245 kExtraCompletedFlag |
246 kSpotSoundCompletedFlag |
247 kDelayCompletedFlag |
248 kActionRequestCompletedFlag |
249 kDeathExtraCompletedFlag;
250
251static const uint32 kPegasusPrimeCreator = MKTAG('J', 'P', 'P', 'P');
252static const uint32 kPegasusPrimeContinueType = MKTAG('P', 'P', 'C', 'T');
253
254static const uint32 kPegasusPrimeDisk1GameType = MKTAG('P', 'P', 'G', '1');
255static const uint32 kPegasusPrimeDisk2GameType = MKTAG('P', 'P', 'G', '2');
256static const uint32 kPegasusPrimeDisk3GameType = MKTAG('P', 'P', 'G', '3');
257static const uint32 kPegasusPrimeDisk4GameType = MKTAG('P', 'P', 'G', '4');
258
259// We only support one of the save versions; the rest are from betas
260// and we are not supporting them.
261static const uint32 kPegasusPrimeVersion = 0x00009019;
262
263static const char kNormalSave = 0;
264static const char kContinueSave = 1;
265
266// Display IDs.
267
268static const DisplayElementID kNavMovieID = 1;
269static const DisplayElementID kTurnPushID = 2;
270
271static const DisplayElementID kMaxGameShellDisplayID = kTurnPushID;
272
273// Display ordering.
274
275static const DisplayOrder kNavLayer = 10000;
276static const DisplayOrder kNavMovieOrder = kNavLayer;
277static const DisplayOrder kTurnPushOrder = kNavMovieOrder + 1;
278
280//
281// Display IDs.
282
283static const DisplayElementID kScreenDimmerID = kMaxGameShellDisplayID + 1;
284static const DisplayElementID kInterface1ID = kScreenDimmerID + 1;
285static const DisplayElementID kInterface2ID = kInterface1ID + 1;
286static const DisplayElementID kInterface3ID = kInterface2ID + 1;
287static const DisplayElementID kInterface4ID = kInterface3ID + 1;
288static const DisplayElementID kDateID = kInterface4ID + 1;
289static const DisplayElementID kCompassID = kDateID + 1;
290static const DisplayElementID kInventoryPushID = kCompassID + 1;
291static const DisplayElementID kInventoryLidID = kInventoryPushID + 1;
292static const DisplayElementID kBiochipPushID = kInventoryLidID + 1;
293static const DisplayElementID kBiochipLidID = kBiochipPushID + 1;
294static const DisplayElementID kEnergyBarID = kBiochipLidID + 1;
295static const DisplayElementID kWarningLightID = kEnergyBarID + 1;
296static const DisplayElementID kAILeftAreaID = kWarningLightID + 1;
297static const DisplayElementID kAIMiddleAreaID = kAILeftAreaID + 1;
298static const DisplayElementID kAIRightAreaID = kAIMiddleAreaID + 1;
299static const DisplayElementID kAIMovieID = kAIRightAreaID + 1;
300static const DisplayElementID kInventoryDropHighlightID = kAIMovieID + 1;
301static const DisplayElementID kBiochipDropHighlightID = kInventoryDropHighlightID + 1;
302
303static const DisplayElementID kDraggingSpriteID = 1000;
304
305static const DisplayElementID kCroppedMovieID = 2000;
306
307static const DisplayElementID kNeighborhoodDisplayID = 3000;
308
309static const DisplayElementID kItemPictureBaseID = 5000;
310
311static const CoordType kNavAreaLeft = 64;
312static const CoordType kNavAreaTop = 64;
313
314static const CoordType kBackground1Left = 0;
315static const CoordType kBackground1Top = 64;
316
317static const CoordType kBackground2Left = 0;
318static const CoordType kBackground2Top = 0;
319
320static const CoordType kBackground3Left = 576;
321static const CoordType kBackground3Top = 64;
322
323static const CoordType kBackground4Left = 0;
324static const CoordType kBackground4Top = 320;
325
326static const CoordType kOverviewControllerLeft = 540;
327static const CoordType kOverviewControllerTop = 348;
328
329static const CoordType kSwapLeft = 194;
330static const CoordType kSwapTop = 116;
331
332static const CoordType kSwapHiliteLeft = 200;
333static const CoordType kSwapHiliteTop = 206;
334
335static const CoordType kDateLeft = 136;
336static const CoordType kDateTop = 44;
337
338static const CoordType kCompassLeft = 222;
339static const CoordType kCompassTop = 42;
340static const CoordType kCompassWidth = 92;
341
342static const CoordType kInventoryPushLeft = 74;
343static const CoordType kInventoryPushTop = 92;
344
345static const CoordType kInventoryLidLeft = 74;
346static const CoordType kInventoryLidTop = 316;
347
348static const CoordType kBiochipPushLeft = 362;
349static const CoordType kBiochipPushTop = 192;
350
351static const CoordType kBiochipLidLeft = 362;
352static const CoordType kBiochipLidTop = 316;
353
354static const CoordType kInventoryDropLeft = 0;
355static const CoordType kInventoryDropTop = 320;
356static const CoordType kInventoryDropRight = 232;
357static const CoordType kInventoryDropBottom = 480;
358
359static const CoordType kBiochipDropLeft = 302;
360static const CoordType kBiochipDropTop = 320;
361static const CoordType kBiochipDropRight = 640;
362static const CoordType kBiochipDropBottom = 480;
363
364static const CoordType kFinalMessageLeft = kInventoryPushLeft + 1;
365static const CoordType kFinalMessageTop = kInventoryPushTop + 24;
366
368//
369// Notifications.
370
371static const NotificationID kJMPDCShellNotificationID = kLastNeighborhoodNotificationID + 1;
372static const NotificationID kInterfaceNotificationID = kJMPDCShellNotificationID + 1;
373static const NotificationID kAINotificationID = kInterfaceNotificationID + 1;
374static const NotificationID kNoradNotificationID = kAINotificationID + 1;
375static const NotificationID kNoradECRNotificationID = kNoradNotificationID + 1;
376static const NotificationID kNoradFillingStationNotificationID = kNoradECRNotificationID + 1;
377static const NotificationID kNoradPressureNotificationID = kNoradFillingStationNotificationID + 1;
378static const NotificationID kNoradUtilityNotificationID = kNoradPressureNotificationID + 1;
379static const NotificationID kNoradElevatorNotificationID = kNoradUtilityNotificationID + 1;
380static const NotificationID kNoradSubPlatformNotificationID = kNoradElevatorNotificationID + 1;
381static const NotificationID kNoradSubChaseNotificationID = kNoradSubPlatformNotificationID + 1;
382static const NotificationID kSubControlNotificationID = kNoradSubChaseNotificationID + 1;
383static const NotificationID kNoradGreenBallNotificationID = kSubControlNotificationID + 1;
384static const NotificationID kNoradGlobeNotificationID = kNoradGreenBallNotificationID + 1;
385static const NotificationID kCaldoriaVidPhoneNotificationID = kNoradGlobeNotificationID + 1;
386static const NotificationID kCaldoriaMessagesNotificationID = kCaldoriaVidPhoneNotificationID + 1;
387static const NotificationID kCaldoriaBombTimerNotificationID = kCaldoriaMessagesNotificationID + 1;
388static const NotificationID kMarsTunnelPodNotificationID = kCaldoriaBombTimerNotificationID + 1;
389static const NotificationID kMarsCanyonChaseNotificationID = kMarsTunnelPodNotificationID + 1;
390
391// Sent to the shell by fShellNotification.
392static const NotificationFlags kGameStartingFlag = 1;
393static const NotificationFlags kNeedNewJumpFlag = kGameStartingFlag << 1;
394static const NotificationFlags kPlayerDiedFlag = kNeedNewJumpFlag << 1;
395
396static const NotificationFlags kJMPShellNotificationFlags = kGameStartingFlag |
397 kNeedNewJumpFlag |
398 kPlayerDiedFlag;
399
400// Sent to the interface.
401static const NotificationFlags kInventoryLidOpenFlag = 1;
402static const NotificationFlags kInventoryLidClosedFlag = kInventoryLidOpenFlag << 1;
403static const NotificationFlags kInventoryDrawerUpFlag = kInventoryLidClosedFlag << 1;
404static const NotificationFlags kInventoryDrawerDownFlag = kInventoryDrawerUpFlag << 1;
405static const NotificationFlags kBiochipLidOpenFlag = kInventoryDrawerDownFlag << 1;
406static const NotificationFlags kBiochipLidClosedFlag = kBiochipLidOpenFlag << 1;
407static const NotificationFlags kBiochipDrawerUpFlag = kBiochipLidClosedFlag << 1;
408static const NotificationFlags kBiochipDrawerDownFlag = kBiochipDrawerUpFlag << 1;
409
410static const NotificationFlags kInterfaceNotificationFlags = kInventoryLidOpenFlag |
411 kInventoryLidClosedFlag |
412 kInventoryDrawerUpFlag |
413 kInventoryDrawerDownFlag |
414 kBiochipLidOpenFlag |
415 kBiochipLidClosedFlag |
416 kBiochipDrawerUpFlag |
417 kBiochipDrawerDownFlag;
418
419// Hot spots.
420
421// Neighborhood hot spots.
422
423static const HotSpotID kFirstNeighborhoodSpotID = 5000;
424
425// kShellSpotFlag is a flag which marks all hot spots which belong to the shell, like
426// the current item and current biochip spots.
427static const HotSpotFlags kShellSpotFlag = 1;
428// kNeighborhoodSpotFlag is a flag which marks all hot spots which belong to a
429// neighborhood, like buttons on walls and so on.
430static const HotSpotFlags kNeighborhoodSpotFlag = kShellSpotFlag << 1;
431// kZoomInSpotFlag is a flag which marks all hot spots which indicate a zoom.
432static const HotSpotFlags kZoomInSpotFlag = kNeighborhoodSpotFlag << 1;
433// kZoomOutSpotFlag is a flag which marks all hot spots which indicate a zoom.
434static const HotSpotFlags kZoomOutSpotFlag = kZoomInSpotFlag << 1;
435
436static const HotSpotFlags kClickSpotFlag = kZoomOutSpotFlag << 1;
437static const HotSpotFlags kPlayExtraSpotFlag = kClickSpotFlag << 1;
438static const HotSpotFlags kPickUpItemSpotFlag = kPlayExtraSpotFlag << 1;
439static const HotSpotFlags kDropItemSpotFlag = kPickUpItemSpotFlag << 1;
440static const HotSpotFlags kOpenDoorSpotFlag = kDropItemSpotFlag << 1;
441
442static const HotSpotFlags kZoomSpotFlags = kZoomInSpotFlag | kZoomOutSpotFlag;
443
444static const HotSpotFlags kHighestGameShellSpotFlag = kOpenDoorSpotFlag;
445
447//
448// Hot spots.
449
450// Shell hot spots.
451// The shell reserves all hot spot IDs from 0 to 999
452
453static const HotSpotID kCurrentItemSpotID = 0;
454static const HotSpotID kCurrentBiochipSpotID = kCurrentItemSpotID + 1;
455
456static const HotSpotID kInventoryDropSpotID = kCurrentBiochipSpotID + 1;
457static const HotSpotID kBiochipDropSpotID = kInventoryDropSpotID + 1;
458
459static const HotSpotID kInfoReturnSpotID = kBiochipDropSpotID + 1;
460
461static const HotSpotID kAIHint1SpotID = kInfoReturnSpotID + 1;
462static const HotSpotID kAIHint2SpotID = kAIHint1SpotID + 1;
463static const HotSpotID kAIHint3SpotID = kAIHint2SpotID + 1;
464static const HotSpotID kAISolveSpotID = kAIHint3SpotID + 1;
465static const HotSpotID kAIBriefingSpotID = kAISolveSpotID + 1;
466static const HotSpotID kAIScanSpotID = kAIBriefingSpotID + 1;
467
468static const HotSpotID kArthurWisdomSpotID = kAIScanSpotID + 1;
469static const HotSpotID kChattyArthurSpotID = kArthurWisdomSpotID + 1;
470static const HotSpotID kChattyAISpotID = kChattyArthurSpotID + 1;
471static const HotSpotID kArthurHeadSpotID = kChattyAISpotID + 1;
472
473static const HotSpotID kPegasusRecallSpotID = kArthurHeadSpotID + 1;
474
475static const HotSpotID kAriesSpotID = kPegasusRecallSpotID + 1;
476static const HotSpotID kMercurySpotID = kAriesSpotID + 1;
477static const HotSpotID kPoseidonSpotID = kMercurySpotID + 1;
478
479static const HotSpotID kAirMaskToggleSpotID = kPoseidonSpotID + 1;
480
481static const HotSpotID kShuttleEnergySpotID = kAirMaskToggleSpotID + 1;
482static const HotSpotID kShuttleGravitonSpotID = kShuttleEnergySpotID + 1;
483static const HotSpotID kShuttleTractorSpotID = kShuttleGravitonSpotID + 1;
484static const HotSpotID kShuttleViewSpotID = kShuttleTractorSpotID + 1;
485static const HotSpotID kShuttleTransportSpotID = kShuttleViewSpotID + 1;
486
487// Most of these are obsolete:
488
489// kInventoryDropSpotFlag is a flag which marks hot spots which are valid drop spots
490// for inventory items.
491// static const HotSpotFlags kInventoryDropSpotFlag = kHighestGameShellSpotFlag << 1;
492
493// kBiochipDropSpotFlag is a flag which marks hot spots which are valid drop spots
494// for biochips.
495// static const HotSpotFlags kBiochipDropSpotFlag = kInventoryDropSpotFlag << 1;
496
497// kInventorySpotFlag is a flag which marks hot spots which indicate inventory items
498// in the environment.
499// static const HotSpotFlags kInventorySpotFlag = kBiochipDropSpotFlag << 1;
500
501// kBiochipSpotFlag is a flag which marks hot spots which indicate biochips
502// in the environment.
503static const HotSpotFlags kPickUpBiochipSpotFlag = kHighestGameShellSpotFlag << 1;
504static const HotSpotFlags kDropBiochipSpotFlag = kPickUpBiochipSpotFlag << 1;
505
506static const HotSpotFlags kInfoReturnSpotFlag = kDropBiochipSpotFlag << 1;
507
508// Biochip and inventory hot spot flags...
509
510static const HotSpotFlags kAIBiochipSpotFlag = kInfoReturnSpotFlag << 1;
511static const HotSpotFlags kArthurBiochipSpotFlag = kAIBiochipSpotFlag << 1;
512static const HotSpotFlags kPegasusBiochipSpotFlag = kArthurBiochipSpotFlag << 1;
513static const HotSpotFlags kOpticalBiochipSpotFlag = kPegasusBiochipSpotFlag << 1;
514static const HotSpotFlags kAirMaskSpotFlag = kOpticalBiochipSpotFlag << 1;
515
516static const HotSpotFlags kJMPClickingSpotFlags = kClickSpotFlag |
517 kPlayExtraSpotFlag |
518 kOpenDoorSpotFlag |
519 kInfoReturnSpotFlag |
520 kAIBiochipSpotFlag |
521 kArthurBiochipSpotFlag |
522 kPegasusBiochipSpotFlag |
523 kOpticalBiochipSpotFlag |
524 kAirMaskSpotFlag;
525
526static const int32 kMainMenuID = 1;
527static const int32 kPauseMenuID = 2;
528static const int32 kCreditsMenuID = 3;
529static const int32 kDeathMenuID = 4;
530
532//
533// Menu commands.
534
535static const GameMenuCommand kMenuCmdOverview = kMenuCmdNoCommand + 1;
536static const GameMenuCommand kMenuCmdStartAdventure = kMenuCmdOverview + 1;
537static const GameMenuCommand kMenuCmdStartWalkthrough = kMenuCmdStartAdventure + 1;
538static const GameMenuCommand kMenuCmdRestore = kMenuCmdStartWalkthrough + 1;
539static const GameMenuCommand kMenuCmdCredits = kMenuCmdRestore + 1;
540static const GameMenuCommand kMenuCmdQuit = kMenuCmdCredits + 1;
541
542static const GameMenuCommand kMenuCmdDeathContinue = kMenuCmdQuit + 1;
543
544static const GameMenuCommand kMenuCmdDeathQuitDemo = kMenuCmdDeathContinue + 1;
545static const GameMenuCommand kMenuCmdDeathMainMenuDemo = kMenuCmdDeathQuitDemo + 1;
546
547static const GameMenuCommand kMenuCmdDeathRestore = kMenuCmdDeathMainMenuDemo + 1;
548static const GameMenuCommand kMenuCmdDeathMainMenu = kMenuCmdDeathRestore + 1;
549
550static const GameMenuCommand kMenuCmdPauseSave = kMenuCmdDeathMainMenu + 1;
551static const GameMenuCommand kMenuCmdPauseContinue = kMenuCmdPauseSave + 1;
552static const GameMenuCommand kMenuCmdPauseRestore = kMenuCmdPauseContinue + 1;
553static const GameMenuCommand kMenuCmdPauseQuit = kMenuCmdPauseRestore + 1;
554
555static const GameMenuCommand kMenuCmdCreditsMainMenu = kMenuCmdPauseQuit + 1;
556
557static const GameMenuCommand kMenuCmdCancelRestart = kMenuCmdCreditsMainMenu + 1;
558static const GameMenuCommand kMenuCmdEjectRestart = kMenuCmdCancelRestart + 1;
559
560static const TimeValue kMenuButtonHiliteTime = 20;
561static const TimeScale kMenuButtonHiliteScale = kSixtyTicksPerSecond;
562
563// PICT resources:
564
565// Warning light PICTs:
566
567static const ResIDType kLightOffID = 128;
568static const ResIDType kLightYellowID = 129;
569static const ResIDType kLightOrangeID = 130;
570static const ResIDType kLightRedID = 131;
571
572// Date PICTs:
573
574static const ResIDType kDatePrehistoricID = 138;
575static const ResIDType kDate2112ID = 139;
576static const ResIDType kDate2185ID = 140;
577static const ResIDType kDate2310ID = 141;
578static const ResIDType kDate2318ID = 142;
579
581//
582// Display Order
583
584static const DisplayOrder kCroppedMovieLayer = 11000;
585
586static const DisplayOrder kMonitorLayer = 12000;
587
588static const DisplayOrder kDragSpriteLayer = 15000;
589static const DisplayOrder kDragSpriteOrder = kDragSpriteLayer;
590
591static const DisplayOrder kInterfaceLayer = 20000;
592static const DisplayOrder kBackground1Order = kInterfaceLayer;
593static const DisplayOrder kBackground2Order = kBackground1Order + 1;
594static const DisplayOrder kBackground3Order = kBackground2Order + 1;
595static const DisplayOrder kBackground4Order = kBackground3Order + 1;
596static const DisplayOrder kDateOrder = kBackground4Order + 1;
597static const DisplayOrder kCompassOrder = kDateOrder + 1;
598static const DisplayOrder kEnergyBarOrder = kCompassOrder + 1;
599static const DisplayOrder kEnergyLightOrder = kEnergyBarOrder + 1;
600
601static const DisplayOrder kAILayer = 22000;
602static const DisplayOrder kAILeftAreaOrder = kAILayer;
603static const DisplayOrder kAIMiddleAreaOrder = kAILeftAreaOrder + 1;
604static const DisplayOrder kAIRightAreaOrder = kAIMiddleAreaOrder + 1;
605static const DisplayOrder kAIMovieOrder = kAIRightAreaOrder + 1;
606
607static const DisplayOrder kHilitesLayer = 23000;
608static const DisplayOrder kInventoryHiliteOrder = kHilitesLayer;
609static const DisplayOrder kBiochipHiliteOrder = kInventoryHiliteOrder + 1;
610
611static const DisplayOrder kPanelsLayer = 25000;
612static const DisplayOrder kInventoryPushOrder = kPanelsLayer;
613static const DisplayOrder kInventoryLidOrder = kInventoryPushOrder + 1;
614static const DisplayOrder kBiochipPushOrder = kInventoryLidOrder + 1;
615static const DisplayOrder kBiochipLidOrder = kBiochipPushOrder + 1;
616static const DisplayOrder kFinalMessageOrder = kBiochipLidOrder + 1;
617
618static const DisplayOrder kInfoLayer = 26000;
619static const DisplayOrder kInfoBackgroundOrder = kInfoLayer;
620static const DisplayOrder kInfoSpinOrder = kInfoBackgroundOrder + 1;
621
622static const DisplayOrder kScreenDimmerOrder = 30000;
623
624static const DisplayOrder kPauseScreenLayer = 31000;
625static const DisplayOrder kPauseMenuOrder = kPauseScreenLayer;
626static const DisplayOrder kSaveGameOrder = kPauseMenuOrder + 1;
627static const DisplayOrder kContinueOrder = kSaveGameOrder + 1;
628static const DisplayOrder kRestoreOrder = kContinueOrder + 1;
629static const DisplayOrder kSoundFXOrder = kRestoreOrder + 1;
630static const DisplayOrder kAmbienceOrder = kSoundFXOrder + 1;
631static const DisplayOrder kWalkthruOrder = kAmbienceOrder + 1;
632static const DisplayOrder kQuitToMainMenuOrder = kWalkthruOrder + 1;
633static const DisplayOrder kPauseLargeHiliteOrder = kQuitToMainMenuOrder + 1;
634static const DisplayOrder kPauseSmallHiliteOrder = kPauseLargeHiliteOrder + 1;
635
637//
638// Death reasons.
639enum {
640 // Caldoria
641 kDeathUncreatedInCaldoria = 1,
642 kDeathCardBomb,
643 kDeathShotBySinclair,
644 kDeathSinclairShotDelegate,
645 kDeathNuclearExplosion,
646
647 // TSA
648 kDeathUncreatedInTSA,
649 kDeathShotByTSARobots,
650
651 // Prehistoric
652 kDeathFallOffCliff,
653 kDeathEatenByDinosaur,
654 kDeathStranded,
655
656 // Norad
657 kDeathGassedInNorad,
658 kDeathArrestedInNorad,
659 kDeathWokeUpNorad,
660 kDeathSubDestroyed, // Unused
661 kDeathRobotThroughNoradDoor,
662 kDeathRobotSubControlRoom,
663
664 // Mars
665 kDeathWrongShuttleLock,
666 kDeathArrestedInMars,
667 kDeathCollidedWithPod,
668 kDeathRunOverByPod,
669 kDeathDidntGetOutOfWay,
670 kDeathReactorBurn,
671 kDeathDidntFindMarsBomb,
672 kDeathDidntDisarmMarsBomb,
673 kDeathNoMaskInMaze,
674 kDeathNoAirInMaze,
675 kDeathGroundByMazebot,
676 kDeathMissedOreBucket,
677 kDeathDidntLeaveBucket,
678 kDeathRanIntoCanyonWall, // Unused
679 kDeathRanIntoSpaceJunk,
680
681 // WSC
682 kDeathDidntStopPoison,
683 kDeathArrestedInWSC,
684 kDeathHitByPlasma,
685 kDeathShotOnCatwalk,
686
687 // Winning
688 kPlayerWonGame
689};
690
691static const CoordType kAILeftAreaLeft = 76;
692static const CoordType kAILeftAreaTop = 334;
693
694static const CoordType kAILeftAreaWidth = 96;
695static const CoordType kAILeftAreaHeight = 96;
696
697static const CoordType kAIMiddleAreaLeft = 172;
698static const CoordType kAIMiddleAreaTop = 334;
699
700static const CoordType kAIMiddleAreaWidth = 192;
701static const CoordType kAIMiddleAreaHeight = 96;
702
703static const CoordType kAIRightAreaLeft = 364;
704static const CoordType kAIRightAreaTop = 334;
705
706static const CoordType kAIRightAreaWidth = 96;
707static const CoordType kAIRightAreaHeight = 96;
708
709enum {
710 kTSAPlayerNotArrived, // initial state, must be zero
711 kTSAPlayerForcedReview, // Player must watch TBP before rip occurs.
712 kTSAPlayerDetectedRip, // Player finished TBP, rip alarm just went off.
713 kTSAPlayerNeedsHistoricalLog, // Player is instructed to get historical log
714 kTSAPlayerGotHistoricalLog,
715 kTSAPlayerInstalledHistoricalLog,
716 kTSABossSawHistoricalLog,
717 kRobotsAtCommandCenter,
718 kRobotsAtFrontDoor,
719 kRobotsAtReadyRoom,
720 kPlayerLockedInPegasus,
721 kPlayerOnWayToPrehistoric,
722 kPlayerWentToPrehistoric,
723 kPlayerOnWayToNorad,
724 kPlayerOnWayToMars,
725 kPlayerOnWayToWSC,
726 kPlayerFinishedWithTSA
727};
728
730//
731// Mode static constants.
732
733static const GameMode kModeInventoryPick = kLastGameShellMode + 1;
734static const GameMode kModeBiochipPick = kModeInventoryPick + 1;
735static const GameMode kModeInfoScreen = kModeBiochipPick + 1;
736
737} // End of namespace Pegasus
738
739#endif
#define MKTAG(a0, a1, a2, a3)
Definition: endian.h:188