ScummVM API documentation
phantom_scenes.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  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef MADS_PHANTOM_SCENES_H
23 #define MADS_PHANTOM_SCENES_H
24 
25 #include "mads/scene.h"
26 #include "mads/phantom/game_phantom.h"
27 //#include "mads/phantom/globals_phantom.h"
28 
29 namespace MADS {
30 namespace Phantom {
31 
32 enum Verb {
33  VERB_LOOK = 0x3,
34  VERB_TAKE = 0x4,
35  VERB_PUSH = 0x5,
36  VERB_OPEN = 0x6,
37  VERB_PUT = 0x7,
38  VERB_TALK_TO = 0x8,
39  VERB_GIVE = 0x9,
40  VERB_PULL = 0xA,
41  VERB_CLOSE = 0xB,
42  VERB_THROW = 0xC,
43  VERB_WALK_TO = 0xD,
44  VERB_ATTACK = 0x14,
45  VERB_CLIMB_DOWN = 0x21,
46  VERB_CLIMB_INTO = 0x22,
47  VERB_CLIMB_THROUGH = 0x23,
48  VERB_EXIT = 0x34,
49  VERB_EXIT_TO = 0x37,
50  VERB_JUMP_INTO = 0x53,
51  VERB_LASSO = 0x59,
52  VERB_LOCK = 0x5D,
53  VERB_LOOK_AT = 0x60,
54  VERB_LOOK_THROUGH = 0x61,
55  VERB_READ = 0x7A,
56  VERB_REMOVE = 0x7C,
57  VERB_TURN_OFF = 0x95,
58  VERB_TURN_ON = 0x96,
59  VERB_UNLOCK = 0x97,
60  VERB_WALK_ACROSS = 0x99,
61  VERB_WALK_DOWN = 0x9A,
62  VERB_WALK_THROUGH = 0x9B,
63  VERB_WALK_UP = 0x9C,
64  VERB_WEAR = 0xA1,
65  VERB_CLIMB_UP = 0xA5,
66  VERB_WALK_ONTO = 0xA6,
67  VERB_WALK = 0xA7,
68  VERB_ENTER = 0xEC,
69  VERB_WALK_BEHIND = 0xF3,
70  VERB_CLIMB = 0x120,
71  VERB_ATTACH = 0x131,
72  VERB_GRAPPLE = 0x133,
73  VERB_SIT_ON = 0x138,
74  VERB_SIT_IN = 0x13A,
75  VERB_WALK_DOWN_STAIRS_TO = 0x153
76 };
77 
78 enum Noun {
79  NOUN_GAME = 0x1,
80  NOUN_QSAVE = 0x2,
81  NOUN_ = 0xE,
82  NOUN_IN_ONE = 0xF,
83  NOUN_IN_TWO = 0x10,
84  NOUN_ACT_CURTAIN = 0x11,
85  NOUN_AISLE = 0x12,
86  NOUN_APRON = 0x13,
87  NOUN_BACKSTAGE = 0x15,
88  NOUN_BEAR_PROP = 0x16,
89  NOUN_BLUE_FRAME = 0x17,
90  NOUN_BOOK = 0x18,
91  NOUN_BUST = 0x19,
92  NOUN_CABLE = 0x1A,
93  NOUN_CARPET = 0x1B,
94  NOUN_CARTON = 0x1C,
95  NOUN_CARTONS = 0x1D,
96  NOUN_CEILING = 0x1E,
97  NOUN_CHAIR = 0x1F,
98  NOUN_CIRCULAR_STAIRCASE = 0x20,
99  NOUN_COLUMN_PROP = 0x24,
100  NOUN_CONDUCTORS_STAND = 0x25,
101  NOUN_CORRIDOR = 0x26,
102  NOUN_COUCH = 0x27,
103  NOUN_COUNTERWEIGHT_SYSTEM = 0x28,
104  NOUN_CRATE = 0x29,
105  NOUN_CRATES = 0x2A,
106  NOUN_CRUMPLED_NOTE = 0x2B,
107  NOUN_CYCLORAMA = 0x2C,
108  NOUN_CYLINDER = 0x2D,
109  NOUN_DOOR = 0x2E,
110  NOUN_DRESSING_ROOM_DOOR = 0x2F,
111  NOUN_DRESSING_SCREEN = 0x30,
112  NOUN_DRESSING_TABLE = 0x31,
113  NOUN_ELEPHANT_PROP = 0x32,
114  NOUN_ENVELOPE = 0x33,
115  NOUN_EXIT_DOWN = 0x35,
116  NOUN_EXIT_SIGN = 0x36,
117  NOUN_EXIT_TO_BACKSTAGE = 0x38,
118  NOUN_EXIT_TO_CELLAR = 0x39,
119  NOUN_EXIT_TO_CORRIDOR = 0x3A,
120  NOUN_EXIT_TO_DRESSING_RMS = 0x3B,
121  NOUN_EXIT_TO_LEFT_WING = 0x3C,
122  NOUN_EXIT_TO_PIT = 0x3D,
123  NOUN_EXIT_TO_RIGHT_WING = 0x3E,
124  NOUN_EXIT_TO_STAGE = 0x3F,
125  NOUN_EXIT_TO_STAIRWELL = 0x40,
126  NOUN_EXIT_TO_TRAP_ROOM = 0x41,
127  NOUN_EXIT_UP = 0x42,
128  NOUN_EXPOSED_BRICK = 0x43,
129  NOUN_FAN = 0x44,
130  NOUN_FIRE_AXE = 0x45,
131  NOUN_FL = 0x46,
132  NOUN_FLAT = 0x47,
133  NOUN_FLATS = 0x48,
134  NOUN_FLOOR = 0x49,
135  NOUN_FOLDING_CHAIRS = 0x4A,
136  NOUN_GARBAGE_CAN = 0x4B,
137  NOUN_GRAFFITI = 0x4C,
138  NOUN_GREEN_FRAME = 0x4D,
139  NOUN_HEMP = 0x4E,
140  NOUN_HOLE = 0x4F,
141  NOUN_HOUSE = 0x50,
142  NOUN_IN_ONE2 = 0x51,
143  NOUN_IN_TWO2 = 0x52,
144  NOUN_JUNK = 0x54,
145  NOUN_KEY = 0x55,
146  NOUN_LAMP = 0x56,
147  NOUN_LANTERN = 0x57,
148  NOUN_LARGE_NOTE = 0x58,
149  NOUN_LEG = 0x5A,
150  NOUN_LETTER = 0x5B,
151  NOUN_LIGHT_FIXTURE = 0x5C,
152  NOUN_LOCKING_RAIL = 0x5E,
153  NOUN_LOCKRAIL = 0x5F,
154  NOUN_MANNEQUINS = 0x62,
155  NOUN_MIRROR = 0x63,
156  NOUN_MUMMY_PROP = 0x64,
157  NOUN_MURAL = 0x65,
158  NOUN_MUSIC_SCORE = 0x66,
159  NOUN_MUSIC_STAND = 0x67,
160  NOUN_MUSIC_STANDS = 0x68,
161  NOUN_NOTHING = 0x69,
162  NOUN_NOTICE = 0x6A,
163  NOUN_ORCHESTRA_DOOR = 0x6B,
164  NOUN_ORCHESTRA_PIT = 0x6C,
165  NOUN_PAINTING = 0x6D,
166  NOUN_PARCHMENT = 0x6E,
167  NOUN_PIECE_OF_PAPER = 0x6F,
168  NOUN_PIPE = 0x70,
169  NOUN_PIT = 0x71,
170  NOUN_PLANT = 0x72,
171  NOUN_POSTER = 0x73,
172  NOUN_PROMPTERS_BOX = 0x74,
173  NOUN_PROP_TABLE = 0x75,
174  NOUN_PROPS = 0x76,
175  NOUN_PROSCENIUM_ARCH = 0x77,
176  NOUN_PURCHASE_LINES = 0x78,
177  NOUN_RAILING = 0x79,
178  NOUN_RED_FRAME = 0x7B,
179  NOUN_ROPE = 0x7D,
180  NOUN_RUG = 0x7E,
181  NOUN_SANDBAG = 0x7F,
182  NOUN_SCAFFOLDING = 0x80,
183  NOUN_SEATS = 0x81,
184  NOUN_SIDE_WALL = 0x82,
185  NOUN_SMALL_NOTE = 0x83,
186  NOUN_STAGE = 0x84,
187  NOUN_STAGE_EXIT = 0x85,
188  NOUN_STAGE_LEFT = 0x86,
189  NOUN_STAGE_RIGHT = 0x87,
190  NOUN_STAGEMANAGERS_POST = 0x88,
191  NOUN_STAIR_UNIT = 0x89,
192  NOUN_STAIRCASE = 0x8A,
193  NOUN_STAIRWELL = 0x8B,
194  NOUN_STOOL = 0x8C,
195  NOUN_STRIKE = 0x8D,
196  NOUN_SWORD = 0x8E,
197  NOUN_TABLE = 0x8F,
198  NOUN_THE_HOUSE = 0x90,
199  NOUN_THUNDER_MACHINE = 0x91,
200  NOUN_TICKET = 0x92,
201  NOUN_TRAP_CEILING = 0x93,
202  NOUN_TRAP_DOOR = 0x94,
203  NOUN_URN = 0x98,
204  NOUN_WALL = 0x9D,
205  NOUN_WARDROBE = 0x9E,
206  NOUN_WASTE_BASKET = 0x9F,
207  NOUN_WATER_PIPE = 0xA0,
208  NOUN_WEDDING_RING = 0xA2,
209  NOUN_YELLOW_FRAME = 0xA3,
210  NOUN_PROP = 0xA4,
211  NOUN_LEFT_DOOR = 0xA8,
212  NOUN_RIGHT_DOOR = 0xA9,
213  NOUN_DOOR_TO_PIT = 0xAA,
214  NOUN_HEADPHONES = 0xAB,
215  NOUN_BOXES = 0xAC,
216  NOUN_MUG = 0xAD,
217  NOUN_DINETTE_SET = 0xAE,
218  NOUN_BOX = 0xAF,
219  NOUN_CASES = 0xB0,
220  NOUN_TRASH_BUCKET = 0xB1,
221  NOUN_CORK_BOARD = 0xB2,
222  NOUN_HEADSET = 0xB3,
223  NOUN_GRAND_FOYER = 0xB4,
224  NOUN_BACK_WALL = 0xB5,
225  NOUN_BALLET_BAR = 0xB6,
226  NOUN_THROW_RUGS = 0xB7,
227  NOUN_COSTUME_RACK = 0xB8,
228  NOUN_COAT_RACK = 0xB9,
229  NOUN_PAINTINGS = 0xBA,
230  NOUN_UMBRELLA = 0xBB,
231  NOUN_SHELF = 0xBC,
232  NOUN_CONTAINER = 0xBD,
233  NOUN_TORN_POSTER = 0xBE,
234  NOUN_REVIEW = 0xBF,
235  NOUN_REVIEWS = 0xC0,
236  NOUN_STAGE_RIGHT_WING = 0xC1,
237  NOUN_STAGE_LEFT_WING = 0xC2,
238  NOUN_PEDESTAL = 0xC3,
239  NOUN_PLANT_PROP = 0xC4,
240  NOUN_STATUE = 0xC5,
241  NOUN_BATTEN = 0xC6,
242  NOUN_BIG_PROP = 0xC7,
243  NOUN_VENTILATION_DUCT = 0xC8,
244  NOUN_CHANDELIER = 0xC9,
245  NOUN_BARRIER = 0xCA,
246  NOUN_PLACARD = 0xCB,
247  NOUN_TICKET_WINDOW = 0xCC,
248  NOUN_ARCHWAY = 0xCD,
249  NOUN_COLUMN = 0xCE,
250  NOUN_RAIL = 0xCF,
251  NOUN_SEAT = 0xD0,
252  NOUN_LOGE_CORRIDOR = 0xD1,
253  NOUN_HOUSE_LIGHT = 0xD2,
254  NOUN_FLOV = 0xD3,
255  NOUN_LEFT_COLUMN = 0xD4,
256  NOUN_RIGHT_COLUMN = 0xD5,
257  NOUN_BOOKCASE = 0xD6,
258  NOUN_DOORWAY = 0xD7,
259  NOUN_COMFY_CHAIR = 0xD8,
260  NOUN_DESK = 0xD9,
261  NOUN_MANAGERS_CHAIR = 0xDA,
262  NOUN_DESK_LAMP = 0xDB,
263  NOUN_WINDOW = 0xDC,
264  NOUN_SHEERS = 0xDD,
265  NOUN_TAPESTRY = 0xDE,
266  NOUN_OVERDOOR_MEDALLION = 0xDF,
267  NOUN_LATTICEWORK = 0xE0,
268  NOUN_DECORATIVE_MOLDING = 0xE1,
269  NOUN_LEFT_DOORWAY = 0xE2,
270  NOUN_LEFT_ARCHWAY = 0xE3,
271  NOUN_RIGHT_DOORWAY = 0xE4,
272  NOUN_RIGHT_ARCHWAY = 0xE5,
273  NOUN_SOFA = 0xE6,
274  NOUN_END_TABLE = 0xE7,
275  NOUN_COFFEE_TABLE = 0xE8,
276  NOUN_DECORATIVE_VASE = 0xE9,
277  NOUN_MARBLE_COLUMN = 0xEA,
278  NOUN_BOX_FIVE = 0xEB,
279  NOUN_BOX_SIX = 0xED,
280  NOUN_BOX_SEVEN = 0xEE,
281  NOUN_BOX_EIGHT = 0xEF,
282  NOUN_BOX_NINE = 0xF0,
283  NOUN_STEP = 0xF1,
284  NOUN_PANEL = 0xF2,
285  NOUN_MIDDLE_DOORWAY = 0xF4,
286  NOUN_LIGHT = 0xF5,
287  NOUN_CANDLE = 0xF6,
288  NOUN_CASE = 0xF7,
289  NOUN_HANDLE = 0xF8,
290  NOUN_AXE = 0xF9,
291  NOUN_DOOR_CHUNKS = 0xFA,
292  NOUN_FLO = 0xFB,
293  NOUN_BULLETIN_BOARD = 0xFC,
294  NOUN_JULIE = 0xFD,
295  NOUN_GLASS_CASE = 0xFE,
296  NOUN_KEYHOLE = 0xFF,
297  NOUN_MIDDLE_DOOR = 0x100,
298  NOUN_DRESSING_GOWN = 0x101,
299  NOUN_MONSIEUR_BRIE = 0x102,
300  NOUN_CATWALK = 0x103,
301  NOUN_GRID = 0x104,
302  NOUN_GIRDER = 0x105,
303  NOUN_GRIDWORK = 0x106,
304  NOUN_DUCTWORK = 0x107,
305  NOUN_OPENING = 0x108,
306  NOUN_DOME = 0x109,
307  NOUN_ALCOVE = 0x10A,
308  NOUN_CHRISTINE_DAAE = 0x10B,
309  NOUN_CHRISTINE = 0x10C,
310  NOUN_WOMAN = 0x10D,
311  NOUN_PROMPTERS_STAND = 0x10E,
312  NOUN_SUPPORT = 0x10F,
313  NOUN_OTHER_CATWALK = 0x110,
314  NOUN_SLOT = 0x111,
315  NOUN_BEAM_POSITION = 0x112,
316  NOUN_LIGHTING_INSTRUMENT = 0x113,
317  NOUN_TARP = 0x114,
318  NOUN_FACE = 0x115,
319  NOUN_CATWALK_OVER_HOUSE = 0x116,
320  NOUN_STAIRCASE_POST = 0x117,
321  NOUN_JACQUES = 0x118,
322  NOUN_GENTLEMAN = 0x119,
323  NOUN_BODY = 0x11A,
324  NOUN_HOLLOW_COLUMN = 0x11B,
325  NOUN_UPPER_LEVEL = 0x11C,
326  NOUN_MIDDLE_LEVEL = 0x11D,
327  NOUN_LOWER_LEVEL = 0x11E,
328  NOUN_LADDER = 0x11F,
329  NOUN_CHANDELIER_TRAP = 0x121,
330  NOUN_PIECE_OF_WOOD = 0x122,
331  NOUN_CUT_HEMP = 0x123,
332  NOUN_STONE_WALL = 0x124,
333  NOUN_LAKE = 0x125,
334  NOUN_STONE_COLUMN = 0x126,
335  NOUN_EXIT_THROUGH = 0x127,
336  NOUN_STONE_FLOOR = 0x128,
337  NOUN_STONE_ARCHWAY = 0x129,
338  NOUN_CHARLES = 0x12A,
339  NOUN_SWITCH = 0x12B,
340  NOUN_PROMPTERS_SEAT = 0x12C,
341  NOUN_LEVER = 0x12D,
342  NOUN_MONSIEUR_RICHARD = 0x12E,
343  NOUN_JULIE2 = 0x12F,
344  NOUN_CABLE_HOOK = 0x130,
345  NOUN_ROPE_WITH_HOOK = 0x132,
346  NOUN_OAR = 0x134,
347  NOUN_ORGAN = 0x135,
348  NOUN_SIT_AT = 0x136,
349  NOUN_ORGAN_BENCH = 0x137,
350  NOUN_LARGE_CHAIR = 0x139,
351  NOUN_SARCOPHAGUS = 0x13B,
352  NOUN_SKULL = 0x13C,
353  NOUN_SKULLS = 0x13D,
354  NOUN_TOTEM = 0x13E,
355  NOUN_POLE = 0x13F,
356  NOUN_CURTAIN = 0x140,
357  NOUN_TORCH = 0x141,
358  NOUN_RAMP = 0x142,
359  NOUN_MADAME_GIRY = 0x143,
360  NOUN_PANELS = 0x144,
361  NOUN_MORE_CATACOMBS = 0x145,
362  NOUN_BLOCKED_ARCHWAY = 0x146,
363  NOUN_GRATE = 0x147,
364  NOUN_CATACOMBS = 0x148,
365  NOUN_TICKET_SELLER = 0x149,
366  NOUN_USHER = 0x14A,
367  NOUN_UNLUCKY_ADVENTURER = 0x14B,
368  NOUN_SWITCH_PANEL = 0x14C,
369  NOUN_SKULL_SWITCH = 0x14D,
370  NOUN_TOGGLE = 0x14E,
371  NOUN_CATACOMB_ROOM = 0x14F,
372  NOUN_BOX_TEN = 0x150,
373  NOUN_FOYER = 0x151,
374  NOUN_WALK_DOWN_STAIRCASE = 0x152,
375  NOUN_HAT_RACK = 0x154,
376  NOUN_VASE = 0x155,
377  NOUN_CLOTHES_DUMMY = 0x156,
378  NOUN_NOTICES = 0x157,
379  NOUN_ARCHWAY_TO_NORTH = 0x158,
380  NOUN_ARCHWAY_TO_WEST = 0x159,
381  NOUN_ARCHWAY_TO_EAST = 0x15A,
382  NOUN_GATE = 0x15B,
383  NOUN_NEST = 0x15C,
384  NOUN_POT = 0x15D,
385  NOUN_PUDDLE = 0x15E,
386  NOUN_WEB = 0x15F,
387  NOUN_PLANK = 0x160,
388  NOUN_BLOCK = 0x161,
389  NOUN_RATS_NEST = 0x162,
390  NOUN_BROKEN_POT = 0x163,
391  NOUN_STONE = 0x164,
392  NOUN_DRAIN = 0x165,
393  NOUN_FATE = 0x166,
394  NOUN_SKULL_SWITCH_1 = 0x167,
395  NOUN_SKULL_SWITCH_2 = 0x168,
396  NOUN_SKULL_SWITCH_3 = 0x169,
397  NOUN_SKULL_SWITCH_4 = 0x16A,
398  NOUN_SKULL_SWITCH_5 = 0x16B,
399  NOUN_SKULL_SWITCH_6 = 0x16C,
400  NOUN_SKULL_SWITCH_7 = 0x16D,
401  NOUN_SKULL_SWITCH_8 = 0x16E,
402  NOUN_SKULL_SWITCH_9 = 0x16F,
403  NOUN_SKULL_SWITCH_10 = 0x170,
404  NOUN_SKULL_SWITCH_11 = 0x171,
405  NOUN_SKULL_SWITCH_12 = 0x172,
406  NOUN_SKULL_SWITCH_13 = 0x173,
407  NOUN_SKULL_SWITCH_14 = 0x174,
408  NOUN_SKULL_SWITCH_15 = 0x175,
409  NOUN_SKULL_SWITCH_16 = 0x176,
410  NOUN_SKULL_SWITCH_17 = 0x177,
411  NOUN_SKULL_SWITCH_18 = 0x178,
412  NOUN_SKULL_SWITCH_19 = 0x179,
413  NOUN_SKULL_SWITCH_20 = 0x17A,
414  NOUN_SKULL_SWITCH_21 = 0x17B,
415  NOUN_SKULL_SWITCH_22 = 0x17C,
416  NOUN_SKULL_SWITCH_23 = 0x17D,
417  NOUN_SKULL_SWITCH_24 = 0x17E,
418  NOUN_SKULL_SWITCH_25 = 0x17F,
419  NOUN_SKULL_SWITCH_26 = 0x180,
420  NOUN_EDGAR_DEGAS = 0x181,
421  NOUN_CHANDELIER_CABLE = 0x182,
422  NOUN_COB_WEB = 0x183,
423  NOUN_SKULL_FACE = 0x184,
424  NOUN_BOAT = 0x185,
425  NOUN_HOOK = 0x186,
426  NOUN_AROUND = 0x187,
427  NOUN_CANE = 0x188,
428  NOUN_MASK = 0x189,
429  NOUN_COVER = 0x18A,
430  NOUN_PADLOCK = 0x18B,
431  NOUN_LID = 0x18C,
432  NOUN_COBWEB = 0x18D,
433  NOUN_PHANTOM = 0x18E,
434  NOUN_PAPER = 0x18F
435 };
436 
438 public:
439  static SceneLogic *createScene(MADSEngine *vm);
440 };
441 
445 class PhantomScene : public SceneLogic {
446 protected:
447  PhantomGlobals &_globals;
448  GamePhantom &_game;
449  MADSAction &_action;
450 
454  Common::Path formAnimName(char sepChar, int suffixNum);
455 
459  void lowRoomsEntrySound();
460 public:
465 
466  void sub7178C();
467 };
468 
469 class SceneInfoPhantom : public SceneInfo {
470  friend class SceneInfo;
471 protected:
472  void loadCodes(BaseSurface &depthSurface, int variant) override;
473 
474  void loadCodes(BaseSurface &depthSurface, Common::SeekableReadStream *stream) override;
475 
480 };
481 
482 } // End of namespace Phantom
483 } // End of namespace MADS
484 
485 #endif
Definition: msurface.h:55
SceneInfoPhantom(MADSEngine *vm)
Definition: phantom_scenes.h:479
Definition: action.h:103
Definition: phantom_scenes.h:469
Definition: phantom_scenes.h:445
Definition: path.h:52
Definition: stream.h:745
Definition: phantom_scenes.h:437
Definition: game_phantom.h:88
Definition: scene_data.h:141
Definition: mads.h:79
Definition: scene_data.h:73
Definition: action.h:28
Definition: globals_phantom.h:130