scummvm/engines/asylum/shared.h
2021-05-17 15:37:48 +02:00

829 lines
28 KiB
C++

/* 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.
*
* 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 ASYLUM_SHARED_H
#define ASYLUM_SHARED_H
namespace Asylum {
//////////////////////////////////////////////////////////////////////////
// Global
//////////////////////////////////////////////////////////////////////////
enum GameFlag {
kGameFlag0 = 0,
kGameFlag4 = 4,
kGameFlag12 = 12,
kGameFlag52 = 52,
kGameFlag114 = 114,
kGameFlag115 = 115,
kGameFlag169 = 169,
kGameFlagScriptProcessing = 183,
kGameFlag186 = 186,
kGameFlagCommentLeavingCell = 214,
kGameFlag215 = 215,
kGameFlag219 = 219,
kGameFlagSolveVCRPuzzle = 220,
kGameFlag235 = 235,
kGameFlag238 = 238,
kGameFlag239 = 239,
kGameFlag243 = 243,
kGameFlag244 = 244,
kGameFlag245 = 245,
kGameFlag246 = 246,
kGameFlag247 = 247,
kGameFlag248 = 248,
kGameFlag249 = 249,
kGameFlag253 = 253,
kGameFlag254 = 254,
kGameFlag255 = 255,
kGameFlag256 = 256,
kGameFlag257 = 257,
kGameFlag258 = 258,
kGameFlag259 = 259,
kGameFlag260 = 260,
kGameFlag261 = 261,
kGameFlag262 = 262,
kGameFlag263 = 263,
kGameFlag264 = 264,
kGameFlag265 = 265,
kGameFlag266 = 266,
kGameFlag267 = 267,
kGameFlag268 = 268,
kGameFlag269 = 269,
kGameFlag270 = 270,
kGameFlag271 = 271,
kGameFlag272 = 272,
kGameFlag273 = 273,
kGameFlag274 = 274,
kGameFlag275 = 275,
kGameFlag276 = 276,
kGameFlag279 = 279,
kGameFlag281 = 281,
kGameFlag282 = 282,
kGameFlag283 = 283,
kGameFlag319 = 319,
kGameFlag320 = 320,
kGameFlag321 = 321,
kGameFlag322 = 322,
kGameFlag323 = 323,
kGameFlag353 = 353,
kGameFlag354 = 354,
kGameFlag355 = 355,
kGameFlag358 = 358,
kGameFlag368 = 368,
kGameFlag369 = 369,
kGameFlag370 = 370,
kGameFlag371 = 371,
kGameFlag384 = 384,
kGameFlag387 = 387,
kGameFlag391 = 391,
kGameFlag405 = 405,
kGameFlag423 = 423,
kGameFlag438 = 438,
kGameFlag439 = 439,
kGameFlag440 = 440,
kGameFlag441 = 441,
kGameFlag442 = 442,
kGameFlag447 = 447,
kGameFlag448 = 448,
kGameFlag450 = 450,
kGameFlag451 = 451,
kGameFlag452 = 452,
kGameFlag453 = 453,
kGameFlag454 = 454,
kGameFlag455 = 455,
kGameFlag470 = 470,
kGameFlag481 = 481,
kGameFlag511 = 511,
kGameFlag528 = 528,
kGameFlag543 = 543,
kGameFlag544 = 544,
kGameFlag545 = 545,
kGameFlag553 = 553,
kGameFlag556 = 556,
kGameFlag557 = 557,
kGameFlag558 = 558,
kGameFlag560 = 560,
kGameFlag561 = 561,
kGameFlag562 = 562,
kGameFlag563 = 563,
kGameFlag564 = 564,
kGameFlag565 = 565,
kGameFlag566 = 566,
kGameFlag567 = 567,
kGameFlag568 = 568,
kGameFlag569 = 569,
kGameFlag570 = 570,
kGameFlag572 = 572,
kGameFlag582 = 582,
kGameFlag583 = 583,
kGameFlag596 = 596,
kGameFlag597 = 597,
kGameFlag598 = 598,
kGameFlag599 = 599,
kGameFlag600 = 600,
kGameFlag608 = 608,
kGameFlag619 = 619,
kGameFlag635 = 635,
kGameFlag636 = 636,
kGameFlag637 = 637,
kGameFlagSolveHiveControl = 640,
kGameFlag684 = 684,
kGameFlag685 = 685,
kGameFlag686 = 686,
kGameFlag687 = 687,
kGameFlag688 = 688,
kGameFlag689 = 689,
kGameFlag690 = 690,
kGameFlag691 = 691,
kGameFlag692 = 692,
kGameFlag693 = 693,
kGameFlag694 = 694,
kGameFlag695 = 695,
kGameFlag696 = 696,
kGameFlag697 = 697,
kGameFlag698 = 698,
kGameFlag699 = 699,
kGameFlag700 = 700,
kGameFlag701 = 701,
kGameFlag702 = 702,
kGameFlag703 = 703,
kGameFlag704 = 704,
kGameFlag705 = 705,
kGameFlag706 = 706,
kGameFlag707 = 707,
kGameFlag708 = 708,
kGameFlag722 = 722,
kGameFlag723 = 723,
kGameFlag724 = 724,
kGameFlag725 = 725,
kGameFlag726 = 726,
kGameFlag727 = 727,
kGameFlag728 = 728,
kGameFlag729 = 729,
kGameFlag730 = 730,
kGameFlag759 = 759,
kGameFlag760 = 760,
kGameFlag761 = 761,
kGameFlag776 = 776,
kGameFlag790 = 790,
kGameFlag791 = 791,
kGameFlag792 = 792,
kGameFlag794 = 794,
kGameFlag795 = 795,
kGameFlag796 = 796,
kGameFlag797 = 797,
kGameFlag801 = 801,
kGameFlag802 = 802,
kGameFlag803 = 803,
kGameFlag804 = 804,
kGameFlag805 = 805,
kGameFlag806 = 806,
kGameFlag809 = 809,
kGameFlag810 = 810,
kGameFlag815 = 815,
kGameFlag816 = 816,
kGameFlag817 = 817,
kGameFlag818 = 818,
kGameFlag819 = 819,
kGameFlag820 = 820,
kGameFlag821 = 821,
kGameFlag822 = 822,
kGameFlag823 = 823,
kGameFlag824 = 824,
kGameFlag825 = 825,
kGameFlag826 = 826,
kGameFlag827 = 827,
kGameFlag828 = 828,
kGameFlag829 = 829,
kGameFlag830 = 830,
kGameFlagSolveHiveMachine = 834,
kGameFlag866 = 866,
kGameFlag875 = 875,
kGameFlag876 = 876,
kGameFlag877 = 877,
kGameFlag878 = 878,
kGameFlag879 = 879,
kGameFlag880 = 880,
kGameFlag881 = 881,
kGameFlag897 = 897,
kGameFlagFinishGame = 901,
kGameFlag925 = 925,
kGameFlag937 = 937,
kGameFlag1009 = 1009,
kGameFlag1021 = 1021,
kGameFlag1022 = 1022,
kGameFlag1023 = 1023,
kGameFlag1054 = 1054,
kGameFlag1055 = 1055,
kGameFlag1056 = 1056,
kGameFlag1057 = 1057,
kGameFlag1058 = 1058,
kGameFlag1059 = 1059,
kGameFlag1060 = 1060,
kGameFlag1061 = 1061,
kGameFlag1062 = 1062,
kGameFlag1063 = 1063,
kGameFlag1064 = 1064,
kGameFlag1065 = 1065,
kGameFlag1066 = 1066,
kGameFlag1067 = 1067,
kGameFlag1099 = 1099,
kGameFlag1108 = 1108,
kGameFlag1121 = 1121,
kGameFlag1122 = 1122,
kGameFlag1131 = 1131,
kGameFlag1137 = 1137,
kGameFlag1144 = 1144
};
enum ChapterIndex {
kChapterInvalid = -1,
kChapterNone = 0,
kChapter1,
kChapter2,
kChapter3,
kChapter4,
kChapter5,
kChapter6,
kChapter7,
kChapter8,
kChapter9,
kChapter10,
kChapter11,
kChapter12,
kChapter13
};
//////////////////////////////////////////////////////////////////////////
// Resources
//////////////////////////////////////////////////////////////////////////
enum ResourcePackId {
kResourcePackText = 0,
kResourcePackShared = 1,
kResourcePackMusic = 2, // Special case: will load from mus* resources
kResourcePackSpeech = 3,
kResourcePackSharedSound = 4,
kResourcePackTowerCells = 5,
kResourcePackInnocentAbandoned = 6,
kResourcePackCourtyardAndChapel = 7,
kResourcePackCircusOfFools = 8,
kResourcePackLaboratory = 9,
kResourcePackHive = 10,
kResourcePackMorgueAndCemetery = 11,
kResourcePackLostVillage = 12,
kResourcePackGauntlet = 13,
kResourcePackMansion = 14,
kResourcePackCave = 15,
kResourcePackMaze = 16,
kResourcePackMorgansLastGame = 17,
kResourcePackSound = 18,
kResourcePack104 = 104,
kResourcePack204 = 204,
kResourcePack304 = 304,
kResourcePackInvalid = 0xFFF
};
#define MAKE_RESOURCE(pack, index) (ResourceId)((((pack) << 16) + 0x80000000) + (unsigned) (int32)(index))
typedef int ResourceId;
enum ResourcesId {
kResourceInvalid = -1,
kResourceNone = 0
};
#define kMusicStopped -666
//////////////////////////////////////////////////////////////////////////
// Drawing
//////////////////////////////////////////////////////////////////////////
enum DrawFlags {
kDrawFlagNone = 0,
kDrawFlagMirrorLeftRight = 2
};
//////////////////////////////////////////////////////////////////////////
// Actions
//////////////////////////////////////////////////////////////////////////
enum ActionType {
kActionTypeNone = 0,
kActionTypeFind = 1,
kActionTypeTalk = 2,
kActionTypeGrab = 4,
kActionType8 = 8,
kActionType16 = 16
};
//////////////////////////////////////////////////////////////////////////
// Script
//////////////////////////////////////////////////////////////////////////
enum OpcodeType {
kOpcodeReturn = 0,
kOpcodeSetGameFlag,
kOpcodeClearGameFlag,
kOpcodeToggleGameFlag,
kOpcodeJumpIfGameFlag,
kOpcodeHideCursor, // 5
kOpcodeShowCursor,
kOpcodePlayAnimation,
kOpcodeMoveScenePosition,
kOpcodeHideActor,
kOpcodeShowActor, // 10
kOpcodeSetActorPosition,
kOpcodeSetSceneMotionStatus,
kOpcodeDisableActor,
kOpcodeEnableActor,
kOpcodeEnableObjects, // 15
kOpcodeReturn1,
kOpcodeRemoveObject,
kOpcodeJumpActorSpeech,
kOpcodeJumpAndSetDirection,
kOpcodeJumpIfActorCoordinates, // 20
kOpcodeNop,
kOpcodeResetAnimation,
kOpcodeDisableObject,
kOpcodeJumpIfSoundPlayingAndPlaySound,
kOpcodeJumpIfActionFind, // 25
kOpcodeSetActionFind,
kOpcodeClearActionFind,
kOpcodeJumpIfActionGrab,
kOpcodeSetActionGrab,
kOpcodeClearActionGrab, // 30
kOpcodeJumpIfActionTalk,
kOpcodeSetActionTalk,
kOpcodeClearActionTalk,
kOpcodeAddReactionHive,
kOpcodeRemoveReactionHive, // 35
kOpcodeHasMoreReactions,
kOpcodeRunEncounter,
kOpcodeJumpIfAction16,
kOpcodeSetAction16,
kOpcodeClearAction16, // 40
kOpcodeSetActorField638,
kOpcodeJumpIfActorField638,
kOpcodeChangeScene,
kOpcodeUpdateActor,
kOpcodePlayMovie, // 45
kOpcodeStopAllObjectsSounds,
kOpcodeStopProcessing,
kOpcodeResumeProcessing,
kOpcodeResetSceneRect,
kOpcodeChangeMusicById, // 50
kOpcodeStopMusic,
kOpcodeIncrementParam1,
kOpcodeSetVolume,
kOpcodeJump,
kOpcodeRunPuzzle, // 55
kOpcodeJumpIfAction8,
kOpcodeSetAction8,
kOpcodeClearAction8,
kOpcodeCreatePalette,
kOpcodeIncrementParam2, // 60
kOpcodeWaitUntilFramePlayed,
kOpcodeUpdateWideScreen,
kOpcodeJumpIfActor,
kOpcodePlaySpeechScene,
kOpcodePlaySpeech, // 65
kOpcodePlaySpeechScene2,
kOpcodeMoveScenePositionFromActor,
kOpcodePaletteFade,
kOpcodeStartPaletteFadeThread,
kOpcodePlaySoundUpdateObject, // 70
kOpcodeActorFaceTarget,
kOpcodeHidMatteBars,
kOpcodeShowMatteBars,
kOpcodeJumpIfSoundPlaying,
kOpcodeChangePlayer, // 75
kOpcodeChangeActorStatus,
kOpcodeStopSound,
kOpcodeJumpRandom,
kOpcodeClearScreen,
kOpcodeQuit, // 80
kOpcodeJumpObjectFrame,
kOpcodeDeleteGraphics,
kOpcodeSetPlayerField944,
kOpcodeSetScriptField1BB0,
kOpcodeOnScriptField1BB0, // 85
kOpcodeInteract,
kOpcodeSetResourcePalette,
kOpcodeSetObjectFrameIndexAndFlags,
kOpcodeSetObjectFlags,
kOpcodeSetActorActionIndex2, // 90
kOpcodeUpdateTransparency,
kOpcodeQueueScript,
kOpcodeProcessActor,
kOpcodeClearActorFields,
kOpcodeSetObjectLastFrameIndex, // 95
kOpcodeSetActionAreaFlags,
kOpcodeUpdatePlayerChapter9,
kOpcodeShowMenu,
kOpcodeUpdateGlobalFlags
};
//////////////////////////////////////////////////////////////////////////
// Actor
//////////////////////////////////////////////////////////////////////////
typedef int ActorIndex;
enum ActorIndexes {
kActorInvalid = -1,
// TODO: check if the names match the actor type
kActorMax = 0,
kActorSarah = 1,
kActorCyclops = 2,
kActorAztec = 3
};
enum ActorStatus {
kActorStatusNone = 0,
kActorStatusWalking = 1, // Walking
kActorStatusWalkingTo, // Auto-walking to target
kActorStatusInteracting,
kActorStatusEnabled, // Standing Still
kActorStatusDisabled, // 5
kActorStatusShowingInventory,
kActorStatusPickupItem,
kActorStatus8,
kActorStatusFidget,
kActorStatus10,
kActorStatus11,
kActorStatusWalking2,
kActorStatusWalkingTo2,
kActorStatusEnabled2,
kActorStatusAttacking, // 15
kActorStatusGettingHurt,
kActorStatusRestarting,
kActorStatus18,
kActorStatusHittingPumpkin,
kActorStatus20,
kActorStatusMorphingInto
};
enum ActorDirection {
kDirectionInvalid = -1,
kDirectionN = 0,
kDirectionNW = 1,
kDirectionW = 2,
kDirectionSW = 3,
kDirectionS = 4,
kDirectionSE = 5,
kDirectionE = 6,
kDirectionNE = 7,
kDirection8 = 8
};
enum ActorFlags {
kActorFlagVisible = 1,
kActorFlagMasked = 2
};
enum DirectionFrom {
kDirectionFromObject = 0,
kDirectionFromPolygons = 1,
kDirectionFromActor = 2,
kDirectionFromParameters = 3
};
//////////////////////////////////////////////////////////////////////////
// Object
//////////////////////////////////////////////////////////////////////////
enum ObjectId {
kObjectInvalid = -1,
kObjectNone = 0,
kObjectHeadBanger = 101,
kObjectAngelFlares = 112,
kObjectTicaTac01 = 391,
kObjectGuyFalls = 434,
kObjectGuyWobbles = 405,
kObjectRocker = 441,
kObjectOpeningGate = 485,
kObjectTableRecordRoom = 659,
kObject703 = 703,
kObjectTree8 = 726,
kObjectSlab = 743,
kObjectPreacherBobAssistant = 802,
kObjectPreacherBob = 803,
kObjectNPC024Church = 816,
kObjectNPC024Fountain = 825,
kObjectNPC027Sit = 838,
kObjectNPC028Sit = 839,
kObjectNPC029Sit = 840,
kObjectNPC027Dancing = 844,
kObjectNPC028Dancing = 845,
kObjectNPC026OutOfWay = 861,
kObjectNPC026Talking = 862,
kObjectOrangeRecord = 920,
kObjectJessieStatusQuo = 984,
kObjectMarty02 = 991,
kObjectEileenOnBench = 993,
kObject994 = 994,
kObjectFishingBoy = 1001,
kObjectDennisStatusQuo = 1011,
kObjectSailorBoy = 1013,
kObjectEleenOnGround = 1019,
kObjectSailorStatusQuo = 1021,
kObjectNPC026TalkStatusQuo = 1038,
kObjectSuckerSittingStatusQuo = 1084,
kObjectBubbles = 1185,
kObjectGlow = 1186,
kObjectDome = 1187,
kObjectRedLight = 1188,
kObjectRing = 1189,
kObjectBallMovesUpright = 1190,
kObjectGearsLightUp = 1191,
kObjectMariaPointsLeft = 1200,
kObjectMariaPointsRight = 1201,
kObjectNPC032Sleeping = 1250,
kObjectNPC032StatusQuoOutside = 1254,
kObjectNPC032StatusQuoBigTop = 1256,
kObjectGlobe = 1261,
kObjectDrawers3 = 1276,
kObjectChalice = 1286,
kObjectFreezerHallInterior = 1337,
kObjectNPC033StartEnc = 1338,
kObjectNPC033GetBook = 1343,
kObjectNPC033Reading = 1344,
kObjectOldMan3 = 1377,
kObjectTattooManStatusQuo = 1391, // NPC 34
kObjectStrongmanStatusQuo = 1402, // NPC 35
kObjectStrongmanStatusQuo2 = 1405, // NPC 35
kObjectInfernoStatusQuo = 1408, // NPC 36
kObjectJugglerWithPin = 1423, // NPC 37
kObjectJuggler = 1424, // NPC 37
kObjectClownStatusQuo = 1428, // NPC 38
kObjectTrixieStatusQuo = 1432, // NPC 39
kObjectSimonStatusQuo = 1434, // NPC 40
kObjectBigTopBarrel = 1436,
kObjectFunTixStatusQuo = 1437, // NPC 44
kObjectStandBehindJuggler = 1438,
kObjectFreakTixStatusQuoUp = 1439, // NPC 45
kObjectFreakTixStatusQuoDown = 1440, // NPC 45
kObjectFortTellerStatusQuo = 1444, // NPC 45
kObjectStrongmanLeft = 1449, // NPC 35
kObjectStrongmanRight = 1450, // NPC 35
kObjectRingTossStatusQuo = 1451, // NPC 47
kObjectKnockDownStatusQuo = 1455, // NPC 47
kObjectPigShootStatusQuo = 1456, // NPC 47
kObjectPretZoolStatusQuo = 1461, // NPC 48
kObjectTimberStatusQuo = 1462, // NPC 49
kObjectTwinsStatusQuo = 1465, // NPC 50
kObjectSeanStatusQuo = 1468, // NPC 51
kObjectMomAndPopStatusQuo = 1470, // NPCs 52-53
kObjectCrow1FlysAway = 1485,
kObjectCrow1Pecks = 1486,
kObjectCrow2AmbientPecks = 1495,
kObjectCrow2FlysAway = 1500,
kObjectCrow3FlysAway = 1502,
kObjectCrow3Pecks = 1503,
kObjectCrow4FlysAway = 1506,
kObjectCrow4Pecks = 1507,
kObjectPumpkin1Loop = 1523,
kObjectPumpkin2Loop = 1524,
kObjectPumpkin3Loop = 1525,
kObjectPumpkin4Loop = 1526,
kObjectPumpkin5Loop = 1527,
kObjectPumpkin6Loop = 1528,
kObjectPumpkin7Loop = 1529,
kObjectPumpkin1Dies = 1530,
kObjectPumpkin2Dies = 1531,
kObjectPumpkin3Dies = 1532,
kObjectPumpkin4Dies = 1533,
kObjectPumpkin5Dies = 1534,
kObjectPumpkin6Dies = 1535,
kObjectPumpkin7Dies = 1536,
kObjectDennisStatus2 = 1580,
kObjectPreAlphaNut = 1582,
kObjectPreAlphaNut2 = 1584,
kObjectDeadMomFromOutside = 1589,
kObjectHeadOnTable = 1595,
kObjectCave = 1763,
kObjectWitchDoctor = 1778,
kObjectStoneWifeStatuQuo = 1782,
kObjectFishermanWidowStatusQuo = 1786,
kObjectABarrier = 1899,
kObjectMonsterUp = 1956,
kObjectMonsterStatus = 1957,
kObjectMonsterDeath = 1958,
kObjectMonsterAttack = 1959,
kObjectPuke1 = 1960,
kObjectPuke2 = 1961,
kObjectPuke3 = 1962,
kObjectMonsterHurt = 1997,
kObjectWheel1 = 2113,
kObjectWheel2 = 2114,
kObjectWheel3 = 2115,
kObjectWheel4 = 2116,
kObjectWheel5 = 2117,
kObjectWheel6 = 2118,
kObjectWheel7 = 2119,
kObjectStoneMasonStatusHitt = 2123,
kObjectFlamingHeadLeftSide = 2129,
kObjectHook1B = 2131,
kObjectHook2B = 2132,
kObjectHook3B = 2133,
kObjectHook4B = 2134,
kObjectHook5B = 2135,
kObjectHook6B = 2136,
kObjectHook0Down = 2152,
kObjectHook2Down = 2154,
kObjectHook3Down = 2155,
kObjectHook4Down = 2156,
kObjectHook5Down = 2157,
kObjectHook6Down = 2158,
kObject2230 = 2230,
kObjectGravinStatusQuoCyber = 2324,
kObjectGravinWorkMachine = 2337,
kObjectNPC062GritzaStatusQuo = 2399,
kObjectNPC063GrundleStatusQuo = 2410,
kObjectNPC064GrellaStatusQuo = 2418,
kObjectSparkPuzzleLeft = 2427,
kObjectSparkPuzzleMiddle = 2429,
kObjectLavaBridge = 2445,
kObjectSparkPuzzleRight = 2451,
kObjectNPC065StatusQuo = 2469,
kObjectFloorTrap1 = 2473,
kObjectFloorTrap2 = 2474,
kObjectFloorTrap3 = 2475,
kObjectFloorTrap4 = 2476,
kObjectFloorTrap5 = 2477,
kObjectGlow4 = 2478,
kObjectBugOnTable = 2480,
kObjectFloorTrap6 = 2481,
kObjectFloorTrap7 = 2482,
kObjectFloorTrap8 = 2483,
kObjectFloorTrap9 = 2484,
kObjectWadeThroughLava = 2500,
kObjectNPC066StatusQuo = 2504,
kObject2507 = 2507,
kObjectBrokenPipe = 2508,
kObjectBodySlides1 = 2514,
kObjectBodySlides2 = 2515,
kObjectBodySlides3 = 2516,
kObjectBodySlides4 = 2517,
kObjectBodySlides5 = 2518,
kObjectBodySlides6 = 2519,
kObjectEmberPopsOut = 2526,
kObjectBugCarriesEmber = 2527,
kObjectGirlStatusQuo = 2541,
kObjectWitchWifeStirring = 2543,
kObjectFurnaceHole = 2554,
kObjectInsidePipeCyberPod = 2555,
kObjectTopOfFurnace = 2566,
kObjectElderBugLimb = 2572,
kObjectQuetzlcaotlStatusQuo = 2578,
kObjectGhost1 = 2579,
kObjectGhost2 = 2580,
kObjectGhost3 = 2581,
kObjectGhost4 = 2582,
kObjectGhost5 = 2583,
kObjectGhost6 = 2584,
kObjectDiscardedBugPincer = 2587,
kObjectGong1 = 2590,
kObjectGong2 = 2591,
kObjectGong3 = 2592,
kObjectGong4 = 2593,
kObjectGong5 = 2594,
kObjectGong6 = 2596,
kObjectGhost2b = 2634,
kObjectRitualLoop = 2674,
kObjectLine = 2859,
kObjectZapPattern1 = 2876,
kObjectZapPattern2 = 2877,
kObjectZapPattern3 = 2878,
kObjectBlanklPixelForWarrior = 2884,
kObjectPixelForHutWarrior = 2885,
kObjectPixelForWaterfallGhost = 2886,
kObjectZapPattern4 = 2892,
kObjectZapPattern5 = 2893,
kObjectZapPattern6 = 2894,
kObjectZapPattern7 = 2895,
kObjectZapPattern8 = 2896,
kObjectZapPattern9 = 2897,
kObjectLitLimbScanner = 3061,
kObjectOfficeWallNew = 3062,
kObjectCyberTable = 3065,
kObjectEnd
};
enum ObjectFlag {
kObjectFlagEnabled = 0x1,
kObjectFlag2 = 0x2,
kObjectFlag4 = 0x4,
kObjectFlag6 = 0x6,
kObjectFlag8 = 0x8,
kObjectFlag10 = 0x10,
kObjectFlag20 = 0x20,
kObjectFlag40 = 0x40,
kObjectFlag80 = 0x80,
kObjectFlagBF = 0xBF,
kObjectFlag1000 = 0x1000,
kObjectFlagC000 = 0xC000,
kObjectFlag10000 = 0x10000,
kObjectFlag10E38 = 0x10E38,
kObjectFlag20000 = 0x20000,
kObjectFlag40000 = 0x40000
};
//////////////////////////////////////////////////////////////////////////
// Puzzles
//////////////////////////////////////////////////////////////////////////
enum PuzzleId {
kPuzzleVCR = 0,
kPuzzlePipes,
kPuzzleTicTacToe,
kPuzzleLock,
kPuzzle4,
kPuzzleWheel, // 5
kPuzzleBoardSalvation,
kPuzzleBoardYouth,
kPuzzleBoardKeyHidesTo,
kPuzzleWritings,
kPuzzle11, // 10
kPuzzleMorgueDoor,
kPuzzleClock,
kPuzzleTimeMachine,
kPuzzleFisherman,
kPuzzleHiveMachine, // 15
kPuzzleHiveControl
};
//////////////////////////////////////////////////////////////////////////
// Helpers
//////////////////////////////////////////////////////////////////////////
#define CLEAR_ARRAY(type, name) { \
for (Common::Array<type *>::iterator it = name.begin(); it != name.end(); it++) {\
delete *it; \
*it = NULL; \
} \
name.clear(); \
}
//////////////////////////////////////////////////////////////////////////
// Macros
//////////////////////////////////////////////////////////////////////////
// Misc
#define rnd(val) _vm->getRandom(val)
// Engine subclasses
#define getEncounter() _vm->encounter()
#define getCursor() _vm->cursor()
#define getMenu() _vm->menu()
#define getPuzzles() _vm->puzzles()
#define getReaction() _vm->reaction()
#define getResource() _vm->resource()
#define getSound() _vm->sound()
#define getSaveLoad() _vm->savegame()
#define getScene() _vm->scene()
#define getScreen() _vm->screen()
#define getScript() _vm->script()
#define getSharedData() _vm->data()
#define getSpecial() _vm->special()
#define getSpeech() _vm->speech()
#define getText() _vm->text()
#define getVideo() _vm->video()
#define getWorld() _vm->scene()->worldstats()
//////////////////////////////////////////////////////////////////////////
// Sub-integer partial access macros
//////////////////////////////////////////////////////////////////////////
#define LOBYTE(d) (*((char*)&(d)))
#define BYTE1(d) (*((char*)&(d)+1)) // Same as HIBYTE()
#define BYTE2(d) (*((char*)&(d)+2))
#define LOWORD(x) (*((int16*)&(x)))
//////////////////////////////////////////////////////////////////////////
// Resource ID macros
//////////////////////////////////////////////////////////////////////////
#define RESOURCE_PACK(id) (ResourcePackId)((((uint32)id) >> 16) & 0x7FFF)
#define RESOURCE_INDEX(id) (uint16)(id)
} // End of namespace Asylum
#endif // ASYLUM_SHARED_H