ScummVM API documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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 
33 namespace Pegasus {
34 
35 // TODO: Organize these
36 
37 static const GameID kGameIDNothing = -1;
38 
39 static const ActorID kNoActorID = kGameIDNothing;
40 static const ActorID kPlayerID = 0;
41 static const ItemID kNoItemID = kGameIDNothing;
42 static const RoomID kNoRoomID = kGameIDNothing;
43 static const ExtraID kNoExtraID = 0xFFFFFFFF;
44 static const NeighborhoodID kNoNeighborhoodID = kGameIDNothing;
45 static const AlternateID kNoAlternateID = 0;
46 static const GameMenuCommand kMenuCmdNoCommand = 0;
47 
48 static const HotSpotActivationID kActivateHotSpotAlways = 0;
49 static const HotSpotActivationID kActivateHotSpotNever = -1;
50 
51 static const ItemState kNoItemState = -1;
52 
53 static const DirectionConstant kNoDirection = 0xFF;
54 static const DirectionConstant kNorth = 0;
55 static const DirectionConstant kSouth = 1;
56 static const DirectionConstant kEast = 2;
57 static const DirectionConstant kWest = 3;
58 
59 static const TurnDirection kNoTurn = 0xFF;
60 static const TurnDirection kTurnLeft = 0;
61 static const TurnDirection kTurnRight = 1;
62 static const TurnDirection kTurnUp = 2;
63 static const TurnDirection kTurnDown = 3;
64 static const TurnDirection kMaxTurns = 4;
65 
66 static const GameMode kNoMode = -1;
67 static const GameMode kModeNavigation = 0;
68 static const GameMode kLastGameShellMode = kModeNavigation;
69 
70 static const CanMoveForwardReason kCanMoveForward = 0;
71 static const CanMoveForwardReason kCantMoveBlocked = kCanMoveForward + 1;
72 static const CanMoveForwardReason kCantMoveDoorClosed = kCantMoveBlocked + 1;
73 static const CanMoveForwardReason kCantMoveDoorLocked = kCantMoveDoorClosed + 1;
74 static const CanMoveForwardReason kCantMoveLastReason = kCantMoveDoorLocked;
75 
76 static const CanTurnReason kCanTurn = 0;
77 static const CanTurnReason kCantTurnNoTurn = kCanTurn + 1;
78 static const CanTurnReason kCantTurnLastReason = kCantTurnNoTurn;
79 
80 static const CanOpenDoorReason kCanOpenDoor = 0;
81 static const CanOpenDoorReason kCantOpenNoDoor = kCanOpenDoor + 1;
82 static const CanOpenDoorReason kCantOpenLocked = kCantOpenNoDoor + 1;
83 static const CanOpenDoorReason kCantOpenAlreadyOpen = kCantOpenLocked + 1;
84 static const CanOpenDoorReason kCantOpenLastReason = kCantOpenAlreadyOpen;
85 
86 static const DisplayElementID kNoDisplayElement = -1;
87 static const DisplayElementID kHighestReservedElementID = -2;
88 
89 static const DisplayElementID kCursorID = kHighestReservedElementID;
90 static const DisplayElementID kLoadScreenID = kCursorID - 1;
91 
92 static const DisplayOrder kMinAvailableOrder = 0;
93 static const DisplayOrder kMaxAvailableOrder = 999998;
94 static const DisplayOrder kLoadScreenOrder = 900000;
95 static const DisplayOrder kCursorOrder = 1000000;
96 
97 static const HotSpotID kNoHotSpotID = -1;
98 static const HotSpotFlags kNoHotSpotFlags = 0;
99 static const HotSpotFlags kAllHotSpotFlags = ~kNoHotSpotFlags;
100 
101 static const NotificationFlags kNoNotificationFlags = 0;
102 
103 static const DisplayElementID kCurrentDragSpriteID = 1000;
104 
105 static const TimeScale kDefaultTimeScale = 600;
106 
107 // Ticks per second.
108 
109 static const TimeScale kOneTickPerSecond = 1;
110 static const TimeScale kTwoTicksPerSecond = 2;
111 static const TimeScale kFifteenTicksPerSecond = 15;
112 static const TimeScale kThirtyTicksPerSecond = 30;
113 static const TimeScale kSixtyTicksPerSecond = 60;
114 static const TimeScale kMovieTicksPerSecond = 600;
115 
116 // These times are in seconds.
117 
118 static const TimeValue kOneSecond = 1;
119 static const TimeValue kTwoSeconds = 2;
120 static const TimeValue kThreeSeconds = 3;
121 static const TimeValue kFourSeconds = 4;
122 static const TimeValue kFiveSeconds = 5;
123 static const TimeValue kSixSeconds = 6;
124 static const TimeValue kSevenSeconds = 7;
125 static const TimeValue kEightSeconds = 8;
126 static const TimeValue kNineSeconds = 9;
127 static const TimeValue kTenSeconds = 10;
128 static const TimeValue kElevenSeconds = 11;
129 static const TimeValue kTwelveSeconds = 12;
130 static const TimeValue kThirteenSeconds = 13;
131 static const TimeValue kFourteenSeconds = 14;
132 static const TimeValue kFifteenSeconds = 15;
133 static const TimeValue kSixteenSeconds = 16;
134 static const TimeValue kSeventeenSeconds = 17;
135 static const TimeValue kEighteenSeconds = 18;
136 static const TimeValue kNineteenSeconds = 19;
137 static const TimeValue kTwentySeconds = 20;
138 static const TimeValue kThirtySeconds = 30;
139 static const TimeValue kFortySeconds = 40;
140 static const TimeValue kFiftySeconds = 50;
141 static const TimeValue kSixtySeconds = 60;
142 static const TimeValue kOneMinute = 60;
143 static const TimeValue kTwoMinutes = kOneMinute * 2;
144 static const TimeValue kThreeMinutes = kOneMinute * 3;
145 static const TimeValue kFourMinutes = kOneMinute * 4;
146 static const TimeValue kFiveMinutes = kOneMinute * 5;
147 static const TimeValue kSixMinutes = kOneMinute * 6;
148 static const TimeValue kSevenMinutes = kOneMinute * 7;
149 static const TimeValue kEightMinutes = kOneMinute * 8;
150 static const TimeValue kNineMinutes = kOneMinute * 9;
151 static const TimeValue kTenMinutes = kOneMinute * 10;
152 static const TimeValue kElevenMinutes = kOneMinute * 11;
153 static const TimeValue kTwelveMinutes = kOneMinute * 12;
154 static const TimeValue kThirteenMinutes = kOneMinute * 13;
155 static const TimeValue kFourteenMinutes = kOneMinute * 14;
156 static const TimeValue kFifteenMinutes = kOneMinute * 15;
157 static const TimeValue kSixteenMinutes = kOneMinute * 16;
158 static const TimeValue kSeventeenMinutes = kOneMinute * 17;
159 static const TimeValue kEighteenMinutes = kOneMinute * 18;
160 static const TimeValue kNineteenMinutes = kOneMinute * 19;
161 static const TimeValue kTwentyMinutes = kOneMinute * 20;
162 static const TimeValue kThirtyMinutes = kOneMinute * 30;
163 static const TimeValue kFortyMinutes = kOneMinute * 40;
164 static const TimeValue kFiftyMinutes = kOneMinute * 50;
165 static const TimeValue kOneHour = kOneMinute * 60;
166 static const TimeValue kTwoHours = kOneHour * 2;
167 
168 // Common times.
169 
170 static const TimeValue kHalfSecondPerTwoTicks = kTwoTicksPerSecond / 2;
171 static const TimeValue kHalfSecondPerThirtyTicks = kThirtyTicksPerSecond / 2;
172 static const TimeValue kHalfSecondPerSixtyTicks = kSixtyTicksPerSecond / 2;
173 
174 static const TimeValue kOneSecondPerTwoTicks = kTwoTicksPerSecond;
175 static const TimeValue kOneSecondPerThirtyTicks = kThirtyTicksPerSecond;
176 static const TimeValue kOneSecondPerSixtyTicks = kSixtyTicksPerSecond;
177 
178 static const TimeValue kOneMinutePerFifteenTicks = kOneMinute * kFifteenTicksPerSecond;
179 static const TimeValue kFiveMinutesPerFifteenTicks = kFiveMinutes * kFifteenTicksPerSecond;
180 static const TimeValue kTenMinutesPerFifteenTicks = kTenMinutes * kFifteenTicksPerSecond;
181 
182 static const TimeValue kOneMinutePerThirtyTicks = kOneMinute * kThirtyTicksPerSecond;
183 static const TimeValue kFiveMinutesPerThirtyTicks = kFiveMinutes * kThirtyTicksPerSecond;
184 static const TimeValue kTenMinutesPerThirtyTicks = kTenMinutes * kThirtyTicksPerSecond;
185 
186 static const TimeValue kOneMinutePerSixtyTicks = kOneMinute * kSixtyTicksPerSecond;
187 static const TimeValue kFiveMinutesPerSixtyTicks = kFiveMinutes * kSixtyTicksPerSecond;
188 static const TimeValue kTenMinutesPerSixtyTicks = kTenMinutes * kSixtyTicksPerSecond;
189 
190 // Time in seconds you can hang around Caldoria without going to work...
191 static const TimeValue kLateWarning2TimeLimit = kFiveMinutes;
192 static const TimeValue kLateWarning3TimeLimit = kTenMinutes;
193 
194 static const TimeValue kSinclairShootsTimeLimit = kThreeMinutes;
195 static const TimeValue kCardBombCountDownTime = kTwelveSeconds;
196 
197 static const TimeValue kOxyMaskFullTime = kThirtyMinutes;
198 
199 static const TimeValue kTSAUncreatedTimeLimit = kFiveMinutes;
200 static const TimeValue kRipTimeLimit = kTenMinutesPerFifteenTicks;
201 static const TimeScale kRipTimeScale = kFifteenTicksPerSecond;
202 
203 static const TimeValue kIntroTimeOut = kThirtySeconds;
204 
205 static const TimeValue kMarsRobotPatienceLimit = kFifteenSeconds;
206 static const TimeValue kLockFreezeTimeLmit = kFifteenSeconds;
207 static const TimeValue kSpaceChaseTimeLimit = kTenMinutes;
208 static const TimeValue kVacuumSurvivalTimeLimit = kThirtySeconds;
209 static const TimeValue kColorMatchingTimeLimit = kFourMinutes;
210 static const TimeScale kJunkTimeScale = kFifteenTicksPerSecond;
211 static const TimeValue kJunkDropBaseTime = kFiveSeconds;
212 static const TimeValue kJunkDropSlopTime = kThreeSeconds;
213 static const TimeValue kJunkTravelTime = kTenSeconds * kJunkTimeScale;
214 static const TimeValue kCollisionReboundTime = kOneSecond * kJunkTimeScale;
215 static const TimeValue kWeaponReboundTime = kTwoSeconds * kJunkTimeScale;
216 
217 static const TimeValue kGawkAtRobotTime = kTenSeconds;
218 static const TimeValue kGawkAtRobotTime2 = kThirteenSeconds;
219 static const TimeValue kPlasmaImpactTime = kTwoSeconds;
220 
221 static const TimeValue kNoradAirMaskTimeLimit = kOneMinute + kFifteenSeconds;
222 
223 static const NotificationID kNeighborhoodNotificationID = 1;
224 static const NotificationID kLastNeighborhoodNotificationID = kNeighborhoodNotificationID;
225 
226 static const NotificationFlags kNeighborhoodMovieCompletedFlag = 1;
227 static const NotificationFlags kMoveForwardCompletedFlag = kNeighborhoodMovieCompletedFlag << 1;
228 static const NotificationFlags kStrideCompletedFlag = kMoveForwardCompletedFlag << 1;
229 static const NotificationFlags kTurnCompletedFlag = kStrideCompletedFlag << 1;
230 static const NotificationFlags kSpotCompletedFlag = kTurnCompletedFlag << 1;
231 static const NotificationFlags kDoorOpenCompletedFlag = kSpotCompletedFlag << 1;
232 static const NotificationFlags kExtraCompletedFlag = kDoorOpenCompletedFlag << 1;
233 static const NotificationFlags kSpotSoundCompletedFlag = kExtraCompletedFlag << 1;
234 static const NotificationFlags kDelayCompletedFlag = kSpotSoundCompletedFlag << 1;
235 static const NotificationFlags kActionRequestCompletedFlag = kDelayCompletedFlag << 1;
236 static const NotificationFlags kDeathExtraCompletedFlag = kActionRequestCompletedFlag << 1;
237 static const NotificationFlags kLastNeighborhoodNotificationFlag = kDeathExtraCompletedFlag;
238 
239 static 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 
251 static const uint32 kPegasusPrimeCreator = MKTAG('J', 'P', 'P', 'P');
252 static const uint32 kPegasusPrimeContinueType = MKTAG('P', 'P', 'C', 'T');
253 
254 static const uint32 kPegasusPrimeDisk1GameType = MKTAG('P', 'P', 'G', '1');
255 static const uint32 kPegasusPrimeDisk2GameType = MKTAG('P', 'P', 'G', '2');
256 static const uint32 kPegasusPrimeDisk3GameType = MKTAG('P', 'P', 'G', '3');
257 static 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.
261 static const uint32 kPegasusPrimeVersion = 0x00009019;
262 
263 static const char kNormalSave = 0;
264 static const char kContinueSave = 1;
265 
266 // Display IDs.
267 
268 static const DisplayElementID kNavMovieID = 1;
269 static const DisplayElementID kTurnPushID = 2;
270 
271 static const DisplayElementID kMaxGameShellDisplayID = kTurnPushID;
272 
273 // Display ordering.
274 
275 static const DisplayOrder kNavLayer = 10000;
276 static const DisplayOrder kNavMovieOrder = kNavLayer;
277 static const DisplayOrder kTurnPushOrder = kNavMovieOrder + 1;
278 
280 //
281 // Display IDs.
282 
283 static const DisplayElementID kScreenDimmerID = kMaxGameShellDisplayID + 1;
284 static const DisplayElementID kInterface1ID = kScreenDimmerID + 1;
285 static const DisplayElementID kInterface2ID = kInterface1ID + 1;
286 static const DisplayElementID kInterface3ID = kInterface2ID + 1;
287 static const DisplayElementID kInterface4ID = kInterface3ID + 1;
288 static const DisplayElementID kDateID = kInterface4ID + 1;
289 static const DisplayElementID kCompassID = kDateID + 1;
290 static const DisplayElementID kInventoryPushID = kCompassID + 1;
291 static const DisplayElementID kInventoryLidID = kInventoryPushID + 1;
292 static const DisplayElementID kBiochipPushID = kInventoryLidID + 1;
293 static const DisplayElementID kBiochipLidID = kBiochipPushID + 1;
294 static const DisplayElementID kEnergyBarID = kBiochipLidID + 1;
295 static const DisplayElementID kWarningLightID = kEnergyBarID + 1;
296 static const DisplayElementID kAILeftAreaID = kWarningLightID + 1;
297 static const DisplayElementID kAIMiddleAreaID = kAILeftAreaID + 1;
298 static const DisplayElementID kAIRightAreaID = kAIMiddleAreaID + 1;
299 static const DisplayElementID kAIMovieID = kAIRightAreaID + 1;
300 static const DisplayElementID kInventoryDropHighlightID = kAIMovieID + 1;
301 static const DisplayElementID kBiochipDropHighlightID = kInventoryDropHighlightID + 1;
302 
303 static const DisplayElementID kDraggingSpriteID = 1000;
304 
305 static const DisplayElementID kCroppedMovieID = 2000;
306 
307 static const DisplayElementID kNeighborhoodDisplayID = 3000;
308 
309 static const DisplayElementID kItemPictureBaseID = 5000;
310 
311 static const CoordType kNavAreaLeft = 64;
312 static const CoordType kNavAreaTop = 64;
313 
314 static const CoordType kBackground1Left = 0;
315 static const CoordType kBackground1Top = 64;
316 
317 static const CoordType kBackground2Left = 0;
318 static const CoordType kBackground2Top = 0;
319 
320 static const CoordType kBackground3Left = 576;
321 static const CoordType kBackground3Top = 64;
322 
323 static const CoordType kBackground4Left = 0;
324 static const CoordType kBackground4Top = 320;
325 
326 static const CoordType kOverviewControllerLeft = 540;
327 static const CoordType kOverviewControllerTop = 348;
328 
329 static const CoordType kSwapLeft = 194;
330 static const CoordType kSwapTop = 116;
331 
332 static const CoordType kSwapHiliteLeft = 200;
333 static const CoordType kSwapHiliteTop = 206;
334 
335 static const CoordType kDateLeft = 136;
336 static const CoordType kDateTop = 44;
337 
338 static const CoordType kCompassLeft = 222;
339 static const CoordType kCompassTop = 42;
340 static const CoordType kCompassWidth = 92;
341 
342 static const CoordType kInventoryPushLeft = 74;
343 static const CoordType kInventoryPushTop = 92;
344 
345 static const CoordType kInventoryLidLeft = 74;
346 static const CoordType kInventoryLidTop = 316;
347 
348 static const CoordType kBiochipPushLeft = 362;
349 static const CoordType kBiochipPushTop = 192;
350 
351 static const CoordType kBiochipLidLeft = 362;
352 static const CoordType kBiochipLidTop = 316;
353 
354 static const CoordType kInventoryDropLeft = 0;
355 static const CoordType kInventoryDropTop = 320;
356 static const CoordType kInventoryDropRight = 232;
357 static const CoordType kInventoryDropBottom = 480;
358 
359 static const CoordType kBiochipDropLeft = 302;
360 static const CoordType kBiochipDropTop = 320;
361 static const CoordType kBiochipDropRight = 640;
362 static const CoordType kBiochipDropBottom = 480;
363 
364 static const CoordType kFinalMessageLeft = kInventoryPushLeft + 1;
365 static const CoordType kFinalMessageTop = kInventoryPushTop + 24;
366 
368 //
369 // Notifications.
370 
371 static const NotificationID kJMPDCShellNotificationID = kLastNeighborhoodNotificationID + 1;
372 static const NotificationID kInterfaceNotificationID = kJMPDCShellNotificationID + 1;
373 static const NotificationID kAINotificationID = kInterfaceNotificationID + 1;
374 static const NotificationID kNoradNotificationID = kAINotificationID + 1;
375 static const NotificationID kNoradECRNotificationID = kNoradNotificationID + 1;
376 static const NotificationID kNoradFillingStationNotificationID = kNoradECRNotificationID + 1;
377 static const NotificationID kNoradPressureNotificationID = kNoradFillingStationNotificationID + 1;
378 static const NotificationID kNoradUtilityNotificationID = kNoradPressureNotificationID + 1;
379 static const NotificationID kNoradElevatorNotificationID = kNoradUtilityNotificationID + 1;
380 static const NotificationID kNoradSubPlatformNotificationID = kNoradElevatorNotificationID + 1;
381 static const NotificationID kNoradSubChaseNotificationID = kNoradSubPlatformNotificationID + 1;
382 static const NotificationID kSubControlNotificationID = kNoradSubChaseNotificationID + 1;
383 static const NotificationID kNoradGreenBallNotificationID = kSubControlNotificationID + 1;
384 static const NotificationID kNoradGlobeNotificationID = kNoradGreenBallNotificationID + 1;
385 static const NotificationID kCaldoriaVidPhoneNotificationID = kNoradGlobeNotificationID + 1;
386 static const NotificationID kCaldoriaMessagesNotificationID = kCaldoriaVidPhoneNotificationID + 1;
387 static const NotificationID kCaldoriaBombTimerNotificationID = kCaldoriaMessagesNotificationID + 1;
388 static const NotificationID kMarsTunnelPodNotificationID = kCaldoriaBombTimerNotificationID + 1;
389 static const NotificationID kMarsCanyonChaseNotificationID = kMarsTunnelPodNotificationID + 1;
390 
391 // Sent to the shell by fShellNotification.
392 static const NotificationFlags kGameStartingFlag = 1;
393 static const NotificationFlags kNeedNewJumpFlag = kGameStartingFlag << 1;
394 static const NotificationFlags kPlayerDiedFlag = kNeedNewJumpFlag << 1;
395 
396 static const NotificationFlags kJMPShellNotificationFlags = kGameStartingFlag |
397  kNeedNewJumpFlag |
398  kPlayerDiedFlag;
399 
400 // Sent to the interface.
401 static const NotificationFlags kInventoryLidOpenFlag = 1;
402 static const NotificationFlags kInventoryLidClosedFlag = kInventoryLidOpenFlag << 1;
403 static const NotificationFlags kInventoryDrawerUpFlag = kInventoryLidClosedFlag << 1;
404 static const NotificationFlags kInventoryDrawerDownFlag = kInventoryDrawerUpFlag << 1;
405 static const NotificationFlags kBiochipLidOpenFlag = kInventoryDrawerDownFlag << 1;
406 static const NotificationFlags kBiochipLidClosedFlag = kBiochipLidOpenFlag << 1;
407 static const NotificationFlags kBiochipDrawerUpFlag = kBiochipLidClosedFlag << 1;
408 static const NotificationFlags kBiochipDrawerDownFlag = kBiochipDrawerUpFlag << 1;
409 
410 static 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 
423 static 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.
427 static 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.
430 static const HotSpotFlags kNeighborhoodSpotFlag = kShellSpotFlag << 1;
431 // kZoomInSpotFlag is a flag which marks all hot spots which indicate a zoom.
432 static const HotSpotFlags kZoomInSpotFlag = kNeighborhoodSpotFlag << 1;
433 // kZoomOutSpotFlag is a flag which marks all hot spots which indicate a zoom.
434 static const HotSpotFlags kZoomOutSpotFlag = kZoomInSpotFlag << 1;
435 
436 static const HotSpotFlags kClickSpotFlag = kZoomOutSpotFlag << 1;
437 static const HotSpotFlags kPlayExtraSpotFlag = kClickSpotFlag << 1;
438 static const HotSpotFlags kPickUpItemSpotFlag = kPlayExtraSpotFlag << 1;
439 static const HotSpotFlags kDropItemSpotFlag = kPickUpItemSpotFlag << 1;
440 static const HotSpotFlags kOpenDoorSpotFlag = kDropItemSpotFlag << 1;
441 
442 static const HotSpotFlags kZoomSpotFlags = kZoomInSpotFlag | kZoomOutSpotFlag;
443 
444 static 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 
453 static const HotSpotID kCurrentItemSpotID = 0;
454 static const HotSpotID kCurrentBiochipSpotID = kCurrentItemSpotID + 1;
455 
456 static const HotSpotID kInventoryDropSpotID = kCurrentBiochipSpotID + 1;
457 static const HotSpotID kBiochipDropSpotID = kInventoryDropSpotID + 1;
458 
459 static const HotSpotID kInfoReturnSpotID = kBiochipDropSpotID + 1;
460 
461 static const HotSpotID kAIHint1SpotID = kInfoReturnSpotID + 1;
462 static const HotSpotID kAIHint2SpotID = kAIHint1SpotID + 1;
463 static const HotSpotID kAIHint3SpotID = kAIHint2SpotID + 1;
464 static const HotSpotID kAISolveSpotID = kAIHint3SpotID + 1;
465 static const HotSpotID kAIBriefingSpotID = kAISolveSpotID + 1;
466 static const HotSpotID kAIScanSpotID = kAIBriefingSpotID + 1;
467 
468 static const HotSpotID kArthurWisdomSpotID = kAIScanSpotID + 1;
469 static const HotSpotID kChattyArthurSpotID = kArthurWisdomSpotID + 1;
470 static const HotSpotID kChattyAISpotID = kChattyArthurSpotID + 1;
471 static const HotSpotID kArthurHeadSpotID = kChattyAISpotID + 1;
472 
473 static const HotSpotID kPegasusRecallSpotID = kArthurHeadSpotID + 1;
474 
475 static const HotSpotID kAriesSpotID = kPegasusRecallSpotID + 1;
476 static const HotSpotID kMercurySpotID = kAriesSpotID + 1;
477 static const HotSpotID kPoseidonSpotID = kMercurySpotID + 1;
478 
479 static const HotSpotID kAirMaskToggleSpotID = kPoseidonSpotID + 1;
480 
481 static const HotSpotID kShuttleEnergySpotID = kAirMaskToggleSpotID + 1;
482 static const HotSpotID kShuttleGravitonSpotID = kShuttleEnergySpotID + 1;
483 static const HotSpotID kShuttleTractorSpotID = kShuttleGravitonSpotID + 1;
484 static const HotSpotID kShuttleViewSpotID = kShuttleTractorSpotID + 1;
485 static 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.
503 static const HotSpotFlags kPickUpBiochipSpotFlag = kHighestGameShellSpotFlag << 1;
504 static const HotSpotFlags kDropBiochipSpotFlag = kPickUpBiochipSpotFlag << 1;
505 
506 static const HotSpotFlags kInfoReturnSpotFlag = kDropBiochipSpotFlag << 1;
507 
508 // Biochip and inventory hot spot flags...
509 
510 static const HotSpotFlags kAIBiochipSpotFlag = kInfoReturnSpotFlag << 1;
511 static const HotSpotFlags kArthurBiochipSpotFlag = kAIBiochipSpotFlag << 1;
512 static const HotSpotFlags kPegasusBiochipSpotFlag = kArthurBiochipSpotFlag << 1;
513 static const HotSpotFlags kOpticalBiochipSpotFlag = kPegasusBiochipSpotFlag << 1;
514 static const HotSpotFlags kAirMaskSpotFlag = kOpticalBiochipSpotFlag << 1;
515 
516 static const HotSpotFlags kJMPClickingSpotFlags = kClickSpotFlag |
517  kPlayExtraSpotFlag |
518  kOpenDoorSpotFlag |
519  kInfoReturnSpotFlag |
520  kAIBiochipSpotFlag |
521  kArthurBiochipSpotFlag |
522  kPegasusBiochipSpotFlag |
523  kOpticalBiochipSpotFlag |
524  kAirMaskSpotFlag;
525 
526 static const int32 kMainMenuID = 1;
527 static const int32 kPauseMenuID = 2;
528 static const int32 kCreditsMenuID = 3;
529 static const int32 kDeathMenuID = 4;
530 
532 //
533 // Menu commands.
534 
535 static const GameMenuCommand kMenuCmdOverview = kMenuCmdNoCommand + 1;
536 static const GameMenuCommand kMenuCmdStartAdventure = kMenuCmdOverview + 1;
537 static const GameMenuCommand kMenuCmdStartWalkthrough = kMenuCmdStartAdventure + 1;
538 static const GameMenuCommand kMenuCmdRestore = kMenuCmdStartWalkthrough + 1;
539 static const GameMenuCommand kMenuCmdCredits = kMenuCmdRestore + 1;
540 static const GameMenuCommand kMenuCmdQuit = kMenuCmdCredits + 1;
541 
542 static const GameMenuCommand kMenuCmdDeathContinue = kMenuCmdQuit + 1;
543 
544 static const GameMenuCommand kMenuCmdDeathQuitDemo = kMenuCmdDeathContinue + 1;
545 static const GameMenuCommand kMenuCmdDeathMainMenuDemo = kMenuCmdDeathQuitDemo + 1;
546 
547 static const GameMenuCommand kMenuCmdDeathRestore = kMenuCmdDeathMainMenuDemo + 1;
548 static const GameMenuCommand kMenuCmdDeathMainMenu = kMenuCmdDeathRestore + 1;
549 
550 static const GameMenuCommand kMenuCmdPauseSave = kMenuCmdDeathMainMenu + 1;
551 static const GameMenuCommand kMenuCmdPauseContinue = kMenuCmdPauseSave + 1;
552 static const GameMenuCommand kMenuCmdPauseRestore = kMenuCmdPauseContinue + 1;
553 static const GameMenuCommand kMenuCmdPauseQuit = kMenuCmdPauseRestore + 1;
554 
555 static const GameMenuCommand kMenuCmdCreditsMainMenu = kMenuCmdPauseQuit + 1;
556 
557 static const GameMenuCommand kMenuCmdCancelRestart = kMenuCmdCreditsMainMenu + 1;
558 static const GameMenuCommand kMenuCmdEjectRestart = kMenuCmdCancelRestart + 1;
559 
560 static const TimeValue kMenuButtonHiliteTime = 20;
561 static const TimeScale kMenuButtonHiliteScale = kSixtyTicksPerSecond;
562 
563 // PICT resources:
564 
565 // Warning light PICTs:
566 
567 static const ResIDType kLightOffID = 128;
568 static const ResIDType kLightYellowID = 129;
569 static const ResIDType kLightOrangeID = 130;
570 static const ResIDType kLightRedID = 131;
571 
572 // Date PICTs:
573 
574 static const ResIDType kDatePrehistoricID = 138;
575 static const ResIDType kDate2112ID = 139;
576 static const ResIDType kDate2185ID = 140;
577 static const ResIDType kDate2310ID = 141;
578 static const ResIDType kDate2318ID = 142;
579 
581 //
582 // Display Order
583 
584 static const DisplayOrder kCroppedMovieLayer = 11000;
585 
586 static const DisplayOrder kMonitorLayer = 12000;
587 
588 static const DisplayOrder kDragSpriteLayer = 15000;
589 static const DisplayOrder kDragSpriteOrder = kDragSpriteLayer;
590 
591 static const DisplayOrder kInterfaceLayer = 20000;
592 static const DisplayOrder kBackground1Order = kInterfaceLayer;
593 static const DisplayOrder kBackground2Order = kBackground1Order + 1;
594 static const DisplayOrder kBackground3Order = kBackground2Order + 1;
595 static const DisplayOrder kBackground4Order = kBackground3Order + 1;
596 static const DisplayOrder kDateOrder = kBackground4Order + 1;
597 static const DisplayOrder kCompassOrder = kDateOrder + 1;
598 static const DisplayOrder kEnergyBarOrder = kCompassOrder + 1;
599 static const DisplayOrder kEnergyLightOrder = kEnergyBarOrder + 1;
600 
601 static const DisplayOrder kAILayer = 22000;
602 static const DisplayOrder kAILeftAreaOrder = kAILayer;
603 static const DisplayOrder kAIMiddleAreaOrder = kAILeftAreaOrder + 1;
604 static const DisplayOrder kAIRightAreaOrder = kAIMiddleAreaOrder + 1;
605 static const DisplayOrder kAIMovieOrder = kAIRightAreaOrder + 1;
606 
607 static const DisplayOrder kHilitesLayer = 23000;
608 static const DisplayOrder kInventoryHiliteOrder = kHilitesLayer;
609 static const DisplayOrder kBiochipHiliteOrder = kInventoryHiliteOrder + 1;
610 
611 static const DisplayOrder kPanelsLayer = 25000;
612 static const DisplayOrder kInventoryPushOrder = kPanelsLayer;
613 static const DisplayOrder kInventoryLidOrder = kInventoryPushOrder + 1;
614 static const DisplayOrder kBiochipPushOrder = kInventoryLidOrder + 1;
615 static const DisplayOrder kBiochipLidOrder = kBiochipPushOrder + 1;
616 static const DisplayOrder kFinalMessageOrder = kBiochipLidOrder + 1;
617 
618 static const DisplayOrder kInfoLayer = 26000;
619 static const DisplayOrder kInfoBackgroundOrder = kInfoLayer;
620 static const DisplayOrder kInfoSpinOrder = kInfoBackgroundOrder + 1;
621 
622 static const DisplayOrder kScreenDimmerOrder = 30000;
623 
624 static const DisplayOrder kPauseScreenLayer = 31000;
625 static const DisplayOrder kPauseMenuOrder = kPauseScreenLayer;
626 static const DisplayOrder kSaveGameOrder = kPauseMenuOrder + 1;
627 static const DisplayOrder kContinueOrder = kSaveGameOrder + 1;
628 static const DisplayOrder kRestoreOrder = kContinueOrder + 1;
629 static const DisplayOrder kSoundFXOrder = kRestoreOrder + 1;
630 static const DisplayOrder kAmbienceOrder = kSoundFXOrder + 1;
631 static const DisplayOrder kWalkthruOrder = kAmbienceOrder + 1;
632 static const DisplayOrder kQuitToMainMenuOrder = kWalkthruOrder + 1;
633 static const DisplayOrder kPauseLargeHiliteOrder = kQuitToMainMenuOrder + 1;
634 static const DisplayOrder kPauseSmallHiliteOrder = kPauseLargeHiliteOrder + 1;
635 
637 //
638 // Death reasons.
639 enum {
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 
691 static const CoordType kAILeftAreaLeft = 76;
692 static const CoordType kAILeftAreaTop = 334;
693 
694 static const CoordType kAILeftAreaWidth = 96;
695 static const CoordType kAILeftAreaHeight = 96;
696 
697 static const CoordType kAIMiddleAreaLeft = 172;
698 static const CoordType kAIMiddleAreaTop = 334;
699 
700 static const CoordType kAIMiddleAreaWidth = 192;
701 static const CoordType kAIMiddleAreaHeight = 96;
702 
703 static const CoordType kAIRightAreaLeft = 364;
704 static const CoordType kAIRightAreaTop = 334;
705 
706 static const CoordType kAIRightAreaWidth = 96;
707 static const CoordType kAIRightAreaHeight = 96;
708 
709 enum {
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 
733 static const GameMode kModeInventoryPick = kLastGameShellMode + 1;
734 static const GameMode kModeBiochipPick = kModeInventoryPick + 1;
735 static const GameMode kModeInfoScreen = kModeBiochipPick + 1;
736 
737 } // End of namespace Pegasus
738 
739 #endif
#define MKTAG(a0, a1, a2, a3)
Definition: endian.h:188
Definition: ai_action.h:33