aboutsummaryrefslogtreecommitdiff
path: root/engines/pegasus/neighborhood/norad/norad.h
blob: 4b4473cd44ad36339247ddbe9f2c0b334d983b63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
/* ScummVM - Graphic Adventure Engine
 *
 * ScummVM is the legal property of its developers, whose names
 * are too numerous to list here. Please refer to the COPYRIGHT
 * file distributed with this source distribution.
 *
 * Additional copyright for this file:
 * Copyright (C) 1995-1997 Presto Studios, Inc.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 */

#ifndef PEGASUS_NEIGHBORHOOD_NORAD_NORAD_H
#define PEGASUS_NEIGHBORHOOD_NORAD_NORAD_H

#include "pegasus/neighborhood/neighborhood.h"

namespace Pegasus {

const tCanOpenDoorReason kCantOpenBadPressure = kCantOpenLastReason + 1;

const tNotificationFlags kAirTimerExpiredFlag = kLastNeighborhoodNotificationFlag << 1;

const uint16 kNoradWarningVolume = 0x100 / 3;
const uint16 kNoradSuckWindVolume = 0x100 / 2;

const int16 kElevatorCompassAngle = -40;
const int16 kSubPlatformCompassAngle = 45;
const int16 kSubControlCompassAngle = -10;

//	Norad interactions.

const tInteractionID kNoradGlobeGameInteractionID = 0;
const tInteractionID kNoradECRMonitorInteractionID = 1;
const tInteractionID kNoradFillingStationInteractionID = 2;
const tInteractionID kNoradElevatorInteractionID = 3;
const tInteractionID kNoradPressureDoorInteractionID = 4;
const tInteractionID kNoradSubControlRoomInteractionID = 5;
const tInteractionID kNoradSubPlatformInteractionID = 6;

/////////////////////////////////////////////
//
//	Norad Alpha

const tCoordType kECRSlideShowLeft = kNavAreaLeft + 78;
const tCoordType kECRSlideShowTop = kNavAreaTop + 1;

const tCoordType kECRPanLeft = kNavAreaLeft + 78 + 5;
const tCoordType kECRPanTop = kNavAreaTop + 1 + 4;
const tCoordType kECRPanRight = kECRPanLeft + 213;
const tCoordType kECRPanBottom = kECRPanTop + 241;

const tCoordType kNoradAlphaElevatorControlsLeft = kNavAreaLeft + 332;
const tCoordType kNoradAlphaElevatorControlsTop = kNavAreaTop + 127;

const tCoordType kNoradAlpha01LeftSideLeft = kNavAreaLeft + 0;
const tCoordType kNoradAlpha01LeftSideTop = kNavAreaTop + 0;

const tCoordType kNoradAlpha01RightSideLeft = kNavAreaLeft + 240;
const tCoordType kNoradAlpha01RightSideTop = kNavAreaTop + 12;

const tCoordType kNoradUpperLevelsLeft = kNavAreaLeft + 98;
const tCoordType kNoradUpperLevelsTop = kNavAreaTop + 31;

const tCoordType kNoradUpperTypeLeft = kNoradUpperLevelsLeft + 114;
const tCoordType kNoradUpperTypeTop = kNoradUpperLevelsTop + 8;

const tCoordType kNoradUpperUpLeft = kNavAreaLeft + 361;
const tCoordType kNoradUpperUpTop = kNavAreaTop + 32;

const tCoordType kNoradUpperDownLeft = kNavAreaLeft + 367;
const tCoordType kNoradUpperDownTop = kNavAreaTop + 66;

const tCoordType kNoradLowerLevelsLeft = kNavAreaLeft + 74;
const tCoordType kNoradLowerLevelsTop = kNavAreaTop + 157;

const tCoordType kNoradLowerTypeLeft = kNoradLowerLevelsLeft + 144;
const tCoordType kNoradLowerTypeTop = kNoradLowerLevelsTop + 9;

const tCoordType kNoradLowerUpLeft = kNavAreaLeft + 380;
const tCoordType kNoradLowerUpTop = kNavAreaTop + 164;

const tCoordType kNoradLowerDownLeft = kNavAreaLeft + 388;
const tCoordType kNoradLowerDownTop = kNavAreaTop + 212;

const tCoordType kNoradPlatformLeft = kNavAreaLeft + 36;
const tCoordType kNoradPlatformTop = kNavAreaTop + 87;

const tCoordType kNoradSubControlLeft = kNavAreaLeft + 0;
const tCoordType kNoradSubControlTop = kNavAreaTop + 84;

const tCoordType kNoradSubControlPinchLeft = kNoradSubControlLeft + 106;
const tCoordType kNoradSubControlPinchTop = kNoradSubControlTop + 86;

const tCoordType kNoradSubControlDownLeft = kNoradSubControlLeft + 66;
const tCoordType kNoradSubControlDownTop = kNoradSubControlTop + 106;

const tCoordType kNoradSubControlRightLeft = kNoradSubControlLeft + 83;
const tCoordType kNoradSubControlRightTop = kNoradSubControlTop + 90;

const tCoordType kNoradSubControlLeftLeft = kNoradSubControlLeft + 56;
const tCoordType kNoradSubControlLeftTop = kNoradSubControlTop + 91;

const tCoordType kNoradSubControlUpLeft = kNoradSubControlLeft + 66;
const tCoordType kNoradSubControlUpTop = kNoradSubControlTop + 81;

const tCoordType kNoradSubControlCCWLeft = kNoradSubControlLeft + 29;
const tCoordType kNoradSubControlCCWTop = kNoradSubControlTop + 88;

const tCoordType kNoradSubControlCWLeft = kNoradSubControlLeft + 0;
const tCoordType kNoradSubControlCWTop = kNoradSubControlTop + 89;

const tCoordType kNoradClawMonitorLeft = kNavAreaLeft + 288;
const tCoordType kNoradClawMonitorTop = kNavAreaTop + 97;

const tCoordType kNoradGreenBallAtALeft = kNoradClawMonitorLeft + 179;
const tCoordType kNoradGreenBallAtATop = kNoradClawMonitorTop + 82;

const tCoordType kNoradGreenBallAtBLeft = kNoradClawMonitorLeft + 130;
const tCoordType kNoradGreenBallAtBTop = kNoradClawMonitorTop + 73;

const tCoordType kNoradGreenBallAtCLeft = kNoradClawMonitorLeft + 110;
const tCoordType kNoradGreenBallAtCTop = kNoradClawMonitorTop + 26;

const tCoordType kNoradGreenBallAtDLeft = kNoradClawMonitorLeft + 21;
const tCoordType kNoradGreenBallAtDTop = kNoradClawMonitorTop + 49;

/////////////////////////////////////////////
//
//	Norad Delta

const tCoordType kGlobeMonitorLeft = kNavAreaLeft + 360;
const tCoordType kGlobeMonitorTop = kNavAreaTop + 144;

const tCoordType kGlobeLeft = kNavAreaLeft + 172;
const tCoordType kGlobeTop = kNavAreaTop;

const tCoordType kGlobeCircleLeftLeft = kNavAreaLeft + 186;
const tCoordType kGlobeCircleLeftTop = kNavAreaTop + 41;

const tCoordType kGlobeCircleRightLeft = kNavAreaLeft + 321;
const tCoordType kGlobeCircleRightTop = kNavAreaTop + 41;

const tCoordType kGlobeCircleUpLeft = kNavAreaLeft + 220;
const tCoordType kGlobeCircleUpTop = kNavAreaTop + 7;

const tCoordType kGlobeCircleDownLeft = kNavAreaLeft + 220;
const tCoordType kGlobeCircleDownTop = kNavAreaTop + 142;

const tCoordType kGlobeUpperLeftHiliteLeft = kNavAreaLeft + 207;
const tCoordType kGlobeUpperLeftHiliteTop = kNavAreaTop + 28;

const tCoordType kGlobeUpperRightHiliteLeft = kNavAreaLeft + 307;
const tCoordType kGlobeUpperRightHiliteTop = kNavAreaTop + 28;

const tCoordType kGlobeLowerLeftHiliteLeft = kNavAreaLeft + 207;
const tCoordType kGlobeLowerLeftHiliteTop = kNavAreaTop + 128;

const tCoordType kGlobeLowerRightHiliteLeft = kNavAreaLeft + 307;
const tCoordType kGlobeLowerRightHiliteTop = kNavAreaTop + 128;

const tCoordType kGlobeLeftMotionHiliteLeft = kNavAreaLeft + 182;
const tCoordType kGlobeLeftMotionHiliteTop = kNavAreaTop + 60;

const tCoordType kGlobeRightMotionHiliteLeft = kNavAreaLeft + 331;
const tCoordType kGlobeRightMotionHiliteTop = kNavAreaTop + 60;

const tCoordType kGlobeUpMotionHiliteLeft = kNavAreaLeft + 239;
const tCoordType kGlobeUpMotionHiliteTop = kNavAreaTop + 3;

const tCoordType kGlobeDownMotionHiliteLeft = kNavAreaLeft + 239;
const tCoordType kGlobeDownMotionHiliteTop = kNavAreaTop + 152;

const tCoordType kGlobeUpperNamesLeft = kNavAreaLeft + 368;
const tCoordType kGlobeUpperNamesTop = kNavAreaTop + 188;

const tCoordType kGlobeLowerNamesLeft = kNavAreaLeft + 368;
const tCoordType kGlobeLowerNamesTop = kNavAreaTop + 212;

const tCoordType kGlobeCountdownLeft = kNavAreaLeft + 478;
const tCoordType kGlobeCountdownTop = kNavAreaTop + 164;

//	Norad Alpha display IDs.

const tDisplayElementID kECRSlideShowMovieID = kNeighborhoodDisplayID;
const tDisplayElementID kECRPanID = kECRSlideShowMovieID + 1;
const tDisplayElementID kNoradAlphaDeathMovieID = kECRPanID + 1;
const tDisplayElementID kNoradElevatorControlsID = kNoradAlphaDeathMovieID + 1;
const tDisplayElementID kN01LeftSideID = kNoradElevatorControlsID + 1;
const tDisplayElementID kN01RightSideID = kN01LeftSideID + 1;
const tDisplayElementID kPressureDoorLevelsID = kN01RightSideID + 1;
const tDisplayElementID kPressureDoorTypeID = kPressureDoorLevelsID + 1;
const tDisplayElementID kPressureDoorUpButtonID = kPressureDoorTypeID + 1;
const tDisplayElementID kPressureDoorDownButtonID = kPressureDoorUpButtonID + 1;
const tDisplayElementID kPlatformMonitorID = kPressureDoorDownButtonID + 1;
const tDisplayElementID kSubControlMonitorID = kPlatformMonitorID + 1;
const tDisplayElementID kClawMonitorID = kSubControlMonitorID + 1;
const tDisplayElementID kSubControlPinchID = kClawMonitorID + 1;
const tDisplayElementID kSubControlDownID = kSubControlPinchID + 1;
const tDisplayElementID kSubControlRightID = kSubControlDownID + 1;
const tDisplayElementID kSubControlLeftID = kSubControlRightID + 1;
const tDisplayElementID kSubControlUpID = kSubControlLeftID + 1;
const tDisplayElementID kSubControlCCWID = kSubControlUpID + 1;
const tDisplayElementID kSubControlCWID = kSubControlCCWID + 1;
const tDisplayElementID kClawMonitorGreenBallID = kSubControlCWID + 1;

//	Norad Delta display IDs.

const tDisplayElementID kGlobeMonitorID = kNeighborhoodDisplayID;
const tDisplayElementID kGlobeMovieID = kGlobeMonitorID + 14;
const tDisplayElementID kGlobeCircleLeftID = kGlobeMovieID + 1;
const tDisplayElementID kGlobeCircleRightID = kGlobeCircleLeftID + 1;
const tDisplayElementID kGlobeCircleUpID = kGlobeCircleRightID + 1;
const tDisplayElementID kGlobeCircleDownID = kGlobeCircleUpID + 1;
const tDisplayElementID kMotionHiliteLeftID = kGlobeCircleDownID + 1;
const tDisplayElementID kMotionHiliteRightID = kMotionHiliteLeftID + 1;
const tDisplayElementID kMotionHiliteUpID = kMotionHiliteRightID + 1;
const tDisplayElementID kMotionHiliteDownID = kMotionHiliteUpID + 1;
const tDisplayElementID kTargetHiliteUpperLeftID = kMotionHiliteDownID + 1;
const tDisplayElementID kTargetHiliteUpperRightID = kTargetHiliteUpperLeftID + 1;
const tDisplayElementID kTargetHiliteLowerLeftID = kTargetHiliteUpperRightID + 1;
const tDisplayElementID kTargetHiliteLowerRightID = kTargetHiliteLowerLeftID + 1;
const tDisplayElementID kGlobeUpperNamesID = kTargetHiliteLowerRightID + 1;
const tDisplayElementID kGlobeLowerNamesID = kGlobeUpperNamesID + 1;
const tDisplayElementID kGlobeCountdownID = kGlobeLowerNamesID + 1;

//	Norad Alpha:

const tDisplayOrder kECRMonitorOrder = kMonitorLayer;
const tDisplayOrder kECRPanOrder = kECRMonitorOrder + 1;

const tDisplayOrder kN01LeftSideOrder = kMonitorLayer;
const tDisplayOrder kN01RightSideOrder = kN01LeftSideOrder + 1;

const tDisplayOrder kElevatorControlsOrder = kMonitorLayer;

const tDisplayOrder kPressureLevelsOrder = kMonitorLayer;
const tDisplayOrder kPressureTypeOrder = kPressureLevelsOrder + 1;
const tDisplayOrder kPressureUpOrder = kPressureTypeOrder + 1;
const tDisplayOrder kPressureDownOrder = kPressureUpOrder + 1;

const tDisplayOrder kPlatformOrder = kMonitorLayer;

const tDisplayOrder kSubControlOrder = kMonitorLayer;
const tDisplayOrder kClawMonitorOrder = kSubControlOrder + 1;
const tDisplayOrder kSubControlPinchOrder = kClawMonitorOrder + 1;
const tDisplayOrder kSubControlDownOrder = kSubControlPinchOrder + 1;
const tDisplayOrder kSubControlRightOrder = kSubControlDownOrder + 1;
const tDisplayOrder kSubControlLeftOrder = kSubControlRightOrder + 1;
const tDisplayOrder kSubControlUpOrder = kSubControlLeftOrder + 1;
const tDisplayOrder kSubControlCCWOrder = kSubControlUpOrder + 1;
const tDisplayOrder kSubControlCWOrder = kSubControlCCWOrder + 1;
const tDisplayOrder kClawMonitorGreenBallOrder = kSubControlCWOrder + 1;

//	Norad Delta:

const tDisplayOrder kGlobeMonitorLayer = kMonitorLayer;
const tDisplayOrder kGlobeMovieLayer = kGlobeMonitorLayer + 1;
const tDisplayOrder kGlobeCircleLayer = kGlobeMovieLayer + 1;
const tDisplayOrder kGlobeHilitesLayer = kGlobeCircleLayer + 1;
const tDisplayOrder kGlobeUpperNamesLayer = kGlobeHilitesLayer + 1;
const tDisplayOrder kGlobeLowerNamesLayer = kGlobeUpperNamesLayer + 1;
const tDisplayOrder kGlobeCountdownLayer = kGlobeLowerNamesLayer + 1;


//	Norad Alpha Extra sequence IDs.

const tExtraID kNoradArriveFromTSA = 0;
const tExtraID kNorad01RobotTaunt = 1;
const tExtraID kNorad01ZoomInWithGasCanister = 2;
const tExtraID kN01WGasCanister = 3;
const tExtraID kNorad01ZoomOutWithGasCanister = 4;
const tExtraID kN01WZEmptyLit = 5;
const tExtraID kN01WZGasCanisterDim = 6;
const tExtraID kN01WZGasCanisterLit = 7;
const tExtraID kN01WZArgonCanisterDim = 8;
const tExtraID kN01WZArgonCanisterLit = 9;
const tExtraID kN01WZAirMaskDim = 10;
const tExtraID kN01WZAirMaskLit = 11;
const tExtraID kN01WZNitrogenCanisterDim = 12;
const tExtraID kN01WZNitrogenCanisterLit = 13;
const tExtraID kNorad04EastDeath = 14;
const tExtraID kNorad19PrepSub = 15;
const tExtraID kNorad19ExitToSub = 16;
const tExtraID kNorad22SouthIntro = 17;
const tExtraID kNorad22SouthReply = 18;
const tExtraID kNorad22SouthFinish = 19;
const tExtraID kN22ClawFromAToB = 20;
const tExtraID kN22ClawALoop = 21;
const tExtraID kN22ClawAPinch = 22;
const tExtraID kN22ClawACounterclockwise = 23;
const tExtraID kN22ClawAClockwise = 24;
const tExtraID kN22ClawFromBToA = 25;
const tExtraID kN22ClawFromBToC = 26;
const tExtraID kN22ClawFromBToD = 27;
const tExtraID kN22ClawBLoop = 28;
const tExtraID kN22ClawBPinch = 29;
const tExtraID kN22ClawBCounterclockwise = 30;
const tExtraID kN22ClawBClockwise = 31;
const tExtraID kN22ClawFromCToB = 32;
const tExtraID kN22ClawCLoop = 33;
const tExtraID kN22ClawCPinch = 34;
const tExtraID kN22ClawCCounterclockwise = 35;
const tExtraID kN22ClawCClockwise = 36;
const tExtraID kN22ClawFromDToB = 37;
const tExtraID kN22ClawDLoop = 38;
const tExtraID kN22ClawDPinch = 39;
const tExtraID kN22ClawDCounterclockwise = 40;
const tExtraID kN22ClawDClockwise = 41;

//	Norad Delta Extra sequence IDs.

const tExtraID kArriveFromSubChase = 0;
const tExtraID kN59ZoomWithRobot = 1;
const tExtraID kN59RobotApproaches = 2;
const tExtraID kN59RobotPunchLoop = 3;
const tExtraID kN59PlayerWins1 = 4;
const tExtraID kN59PlayerWins2 = 5;
const tExtraID kN59RobotWins = 6;
const tExtraID kN59RobotHeadOpens = 7;
const tExtraID kN59Biochips111 = 8;
const tExtraID kN59Biochips011 = 9;
const tExtraID kN59Biochips101 = 10;
const tExtraID kN59Biochips001 = 11;
const tExtraID kN59Biochips110 = 12;
const tExtraID kN59Biochips010 = 13;
const tExtraID kN59Biochips100 = 14;
const tExtraID kN59Biochips000 = 15;
const tExtraID kN59RobotDisappears = 16;
const tExtraID kN60ClawFromAToB = 17;
const tExtraID kN60ClawALoop = 18;
const tExtraID kN60ClawAPinch = 19;
const tExtraID kN60ClawACounterclockwise = 20;
const tExtraID kN60ClawAClockwise = 21;
const tExtraID kN60ClawFromBToA = 22;
const tExtraID kN60ClawFromBToC = 23;
const tExtraID kN60ClawFromBToD = 24;
const tExtraID kN60ClawBLoop = 25;
const tExtraID kN60ClawBPinch = 26;
const tExtraID kN60ClawBCounterclockwise = 27;
const tExtraID kN60ClawBClockwise = 28;
const tExtraID kN60ClawFromCToB = 29;
const tExtraID kN60ClawCLoop = 30;
const tExtraID kN60ClawCPinch = 31;
const tExtraID kN60ClawCCounterclockwise = 32;
const tExtraID kN60ClawCClockwise = 33;
const tExtraID kN60ClawFromDToB = 34;
const tExtraID kN60ClawDLoop = 35;
const tExtraID kN60ClawDPinch = 36;
const tExtraID kN60ClawDCounterclockwise = 37;
const tExtraID kN60ClawDClockwise = 38;
const tExtraID kN60RobotApproaches = 39;
const tExtraID kN60FirstMistake = 40;
const tExtraID kN60ArmActivated = 41;
const tExtraID kN60SecondMistake = 42;
const tExtraID kN60ArmToPositionB = 43;
const tExtraID kN60ThirdMistake = 44;
const tExtraID kN60ArmGrabsRobot = 45;
const tExtraID kN60FourthMistake = 46;
const tExtraID kN60ArmCarriesRobotToPositionA = 47;
const tExtraID kN60PlayerFollowsRobotToDoor = 48;
const tExtraID kN60RobotHeadOpens = 49;
const tExtraID kN60Biochips111 = 50;
const tExtraID kN60Biochips011 = 51;
const tExtraID kN60Biochips101 = 52;
const tExtraID kN60Biochips001 = 53;
const tExtraID kN60Biochips110 = 54;
const tExtraID kN60Biochips010 = 55;
const tExtraID kN60Biochips100 = 56;
const tExtraID kN60Biochips000 = 57;
const tExtraID kN60RobotDisappears = 58;
const tExtraID kNoradDeltaRetinalScanBad = 59;
const tExtraID kNoradDeltaRetinalScanGood = 60;
const tExtraID kN79BrightView = 61;

const TimeScale kNoradAlphaMovieScale = 600;
const TimeScale kNoradAlphaFramesPerSecond = 15;
const TimeScale kNoradAlphaFrameDuration = 40;

const tRoomID kNorad59West = 23;
const tRoomID kNorad60West = 25;
const tHotSpotID kNorad19ActivateMonitorSpotID = 5031;

// This is the code common to both Norad Alpha and Norad Delta

class Norad : public Neighborhood {
public:
	Norad(InputHandler *, PegasusEngine *owner, const Common::String &resName, const tNeighborhoodID);
	virtual ~Norad() {}

	void flushGameState();

	virtual void start();

	virtual void getClawInfo(tHotSpotID &outSpotID, tHotSpotID &prepSpotID,
			tHotSpotID &clawControlSpotID, tHotSpotID &pinchClawSpotID,
			tHotSpotID &moveClawDownSpotID, tHotSpotID &moveClawRightSpotID,
			tHotSpotID &moveClawLeftSpotID,tHotSpotID &moveClawUpSpotID,
			tHotSpotID &clawCCWSpotID, tHotSpotID &clawCWSpotID, uint32 &, uint32 *&) = 0;
	void checkAirMask();

	virtual uint16 getDateResID() const;

	virtual GameInteraction *makeInteraction(const tInteractionID);

	Common::String getBriefingMovie();

	void pickedUpItem(Item *);

	virtual void playClawMonitorIntro() {}

	void doneWithPressureDoor();

protected:
	tCanOpenDoorReason canOpenDoor(DoorTable::Entry &);
	void cantOpenDoor(tCanOpenDoorReason);
	int16 getStaticCompassAngle(const tRoomID, const tDirectionConstant);
	virtual void startExitMovie(const ExitTable::Entry &);
	void startZoomMovie(const ZoomTable::Entry &);
	virtual void upButton(const Input &);
	virtual void activateHotspots();

	virtual void arriveAt(const tRoomID, const tDirectionConstant);
	virtual void arriveAtNoradElevator();
	virtual void arriveAtUpperPressureDoorRoom();
	virtual void arriveAtLowerPressureDoorRoom();
	virtual void arriveAtSubPlatformRoom();
	virtual void arriveAtSubControlRoom();
	void setUpAirMask();
	virtual void receiveNotification(Notification *, const tNotificationFlags);
	virtual bool playingAgainstRobot() { return false; }

	Notification _noradNotification;
	bool _doneWithPressureDoor;

	tRoomID _elevatorUpRoomID;
	tRoomID _elevatorDownRoomID;
	tHotSpotID _elevatorUpSpotID;
	tHotSpotID _elevatorDownSpotID;

	TimeBase _airMaskTimer;
	NotificationCallBack _airMaskCallBack;

	tRoomID _subRoomEntryRoom1;
	tDirectionConstant _subRoomEntryDir1;
	tRoomID _subRoomEntryRoom2;
	tDirectionConstant _subRoomEntryDir2;
	tRoomID _upperPressureDoorRoom;
	tRoomID _lowerPressureDoorRoom;

	tHotSpotID _upperPressureDoorUpSpotID;
	tHotSpotID _upperPressureDoorDownSpotID;
	tHotSpotID _upperPressureDoorAbortSpotID;
	
	tHotSpotID _lowerPressureDoorUpSpotID;
	tHotSpotID _lowerPressureDoorDownSpotID;
	tHotSpotID _lowerPressureDoorAbortSpotID;
	
	TimeValue _pressureSoundIn;
	TimeValue _pressureSoundOut;
	TimeValue _equalizeSoundIn;
	TimeValue _equalizeSoundOut;
	TimeValue _accessDeniedIn;
	TimeValue _accessDeniedOut;
	
	tRoomID	 _platformRoom;
	tRoomID _subControlRoom;
};

} // End of namespace Pegasus

#endif