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