scummvm/engines/mads/nebular/globals_nebular.h
2015-03-10 20:32:44 -04:00

316 lines
8.3 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 MADS_GLOBALS_NEBULAR_H
#define MADS_GLOBALS_NEBULAR_H
#include "common/scummsys.h"
#include "common/array.h"
#include "mads/game.h"
#include "mads/resources.h"
namespace MADS {
namespace Nebular {
enum GlobalId {
kSexOfRex = 0,
kOldSexOfRex = 1,
kWalkerTiming = 2,
// kWalkerTiming0 = 3,
kTalkInanimateCount = 4,
kCopyProtectFailed = 5,
/* Section #1 variables */
kNeedToStandUp = 10,
kTurkeyExploded = 11,
kMedicineCabinetOpen = 12,
kMedicineCabinetVirgin = 13,
kWatchedViewScreen = 14,
kHoovicAlive = 15,
kHoovicSated = 16,
kHoovicFishEaten = 17,
kWaterInAPuddle = 18,
kFishIn105 = 19,
kFishIn107 = 20,
kFishIn108 = 21,
kRandomNumber = 29,
/* Section #2 variables */
kCurtainOpen = 30,
kLadderBroken = 31,
kBone202Status = 32,
kMeteorologistStatus = 33,
kRhotundaStatus = 34,
kLeavesStatus = 35,
kMonkeyStatus = 36,
kMeteorologistEverSeen = 37,
kMeteorologistWatch = 38,
kTeleporterCommand = 39,
kTeleporterDestination = 40,
kTeleporterUnderstood = 41,
kConv205 = 42,
kChickenPermitted = 43,
kTwinklesStatus = 44,
kTwinklesApproached = 45,
kConvTwinkles1 = 46,
kConvTwinkles2 = 47,
kConvTwinkles3 = 48,
kConvTwinkles5 = 49,
kConvTwinkles6 = 50,
kConvTwinkles7 = 51,
kConvTwinkles8 = 52,
kBlowgunStatus = 53,
/* Section #3 Variables */
kAfterHavoc = 60,
kHaveYourStuff = 61,
kRightView320 = 62,
kConvBuddy1 = 63,
kConvBuddy2 = 64,
kMetBuddyBeast = 65,
kKnowsBuddyBeast = 66,
kConvSlache1 = 67,
kConvSlache2 = 68,
kConvSlache3 = 69,
kRexHasMetSlache = 70,
kConvIntern = 71,
kHasSeenProfPyro = 72,
kKickedIn391Grate = 73,
/* Section #4 Variables */
kArmoryDoorOpen = 80,
kStorageDoorOpen = 81,
kNextIngredient = 82,
kIngredientList = 83,
kIngredientList1 = 84,
kIngredientList2 = 85,
kIngredientList3 = 86,
kIngredientQuantity = 87,
kIngredientQuantity1 = 88,
kIngredientQuantity2 = 89,
kIngredientQuantity3 = 90,
kconvPyro_1 = 91,
kconvPyro_2 = 92,
kconvPyro_3 = 93,
kconvPyro_4 = 94,
kBadFirstIngredient = 95,
kConvBartender1 = 96,
kConvBartender2 = 97,
kConvBartender3 = 98,
kConvBartender4 = 99,
kHasPurchased = 100,
kBeenThruHelgaScene = 101,
kHasSaidBinocs = 102,
kHasSaidTimer = 103,
kBottleDisplayed = 104,
kHasBeenScanned = 105,
kSomeoneHasExploded = 106,
/* Section #5 Variables */
kBoatRaised = 110,
kCarStatus = 111,
kCityFlooded = 112,
kLaserOn = 113,
kLaserHoleIsThere = 114,
kCarIsGone = 115,
kRegisterOpen = 116,
kSafeStatus = 117,
kDogStatus = 118,
kLineStatus = 119,
kHoverCarLocation = 120,
kHoverCarDestination = 121,
/* Section #6 Variables */
kConvHermit1 = 130,
kConvHermit2 = 131,
kHasTalkedToHermit = 132,
kHermitWantsBatteries = 133,
kHandsetCellStatus = 134,
kBeenInVideoStore = 135,
kDurafailRecharged = 136,
kPenlightCellStatus = 137,
kTimebombStatus = 138,
kCheckDaemonTimebomb = 140,
kResurrectRoom = 141,
/* Section #6 Time-Bomb Variables */
kTimebombClock = 142,
// kTimebombClock0 = 143,
kTimebombTimer = 144,
// kTimebombTimer0 = 145,
kWarnedFloodCity = 146,
/* Section #7 Variables */
kBottleStatus = 150,
kMonsterAlive = 151,
kConvBottleFillNode = 152,
kBoatStatus = 153,
/* Section #8 Variables */
kAntigravClock = 160,
// kAntigravClock0 = 161,
kAntigravTiming = 162,
// kAntigravTiming0 = 163,
kWindowFixed = 164,
kInSpace = 165,
kReturnFromCut = 166,
kBeamIsUp = 167,
kForceBeamDown = 168,
kCameFromCut = 169,
kCutX = 170,
kCutY = 171,
kCutFacing = 172,
kDontRepeat = 173,
kHoppyDead = 174,
kHasWatchedAntigrav = 175,
kRemoteSequenceRan = 176,
kRemoteOnGround = 177,
kFromCockpit = 178,
kExitShip = 179,
kBetweenRooms = 180,
kTopButtonPushed = 181,
kTargetModInstalled = 182,
kShieldModInstalled = 183,
kUpBecauseOfRemote = 184,
kTeleporterRoom = 190,
kTeleporterCode = 200
};
// Enums used for specific individual globals
// Section #1
// Rex's sex/swimming state
enum { REX_MALE = 0, REX_MALE_SWIMMER = 1, REX_FEMALE = 2 };
// Section #2
// State of Meteorologist in the outpost
enum { METEOROLOGIST_ABSENT = 0, METEOROLOGIST_PRESENT = 1, METEOROLOGIST_GONE = 2 };
// State of watching the Meteorologist
enum { METEOROLOGIST_NORMAL = 0, METEOROLOGIST_GROUND = 1, METEOROLOGIST_TOWER = 2 };
// The fat bouncy lady that can squish you on the plains
enum { RHOTUNDA_HUNGRY = 0, RHOTUNDA_STUCK = 1, RHOTUNDA_GONE = 2 };
// Flags for the bones you can take
enum { BONE_202_LEFT_GONE = 1, BONE_202_RIGHT_GONE = 2 };
// Leaves used to cover the trap
enum { LEAVES_ON_GROUND = 0, LEAVES_WITH_PLAYER = 1, LEAVES_ON_TRAP = 2 };
// Monkey ambush state
enum { MONKEY_AMBUSH_READY = 0, MONKEY_HAS_BINOCULARS = 1, MONKEY_IS_GONE = 2 };
// Teleporter status flags
enum {
TELEPORTER_NONE = 0, TELEPORTER_BEAM_IN = 1, TELEPORTER_BEAM_OUT = 2,
TELEPORTER_STEP_OUT = 3, TELEPORTER_WRONG = 4
};
// Twinkles status
enum { TWINKLES_AT_HOME = 0, TWINKLES_GONE = 1 };
// Section #4
// Status of the explosives
enum { EXPLOSIVES_INSIDE = 3 };
// Section #5
// Dog status (room 602, outside Abdul's garage)
enum { DOG_PRESENT = 1, DOG_LEFT = 2, DOG_GONE = 3, DOG_DEAD = 4 };
// Dog status (room 608, inside Abdul's garage)
enum { CAR_UP = 0, CAR_SQUASHES_DOG = 1, CAR_SQUASHES_DOG_AGAIN = 2, CAR_DOWN = 3, CAR_DOWN_ON_SQUASHED_DOG = 4 };
enum { SAFE_CLOSED = 0, SAFE_OPENED = 1, SAFE_CLOSED_WITH_HOLE = 2, SAFE_OPENED_WITH_HOLE = 3 };
enum { LINE_NOT_DROPPED = 1, LINE_DROPPED = 2, LINE_TIED = 3, LINE_NOW_UNTIED = 4 };
// Section #6
enum {
NO_CELLS = 0, // Handset doesn't contain any cells
CHARGED_DURAFAIL = 1, // Handset has charged durafail cells
UNCHARGED_DURAFAIL = 2, // Handset has uncharged durafail cells */
PHONE_CELLS = 3, // Handset has already charged phone cells
FIRST_TIME_PHONE_CELLS = 4, // First time phone cells are in the handset
FIRST_TIME_UNCHARGED_DURAFAIL = 5, // First time uncharged cells are in penlight
FIRST_TIME_CHARGED_DURAFAIL = 6 // First time charged cells are in penlight
};
// Time bomb status
enum {
TIMEBOMB_DEACTIVATED = 0, TIMEBOMB_ACTIVATED = 1,
TIMEBOMB_BLOW_UP = 2, TIMEBOMB_DEAD = 3
};
/* Section #7 */
// Status of the the bottle
enum {
BOTTLE_EMPTY = 0, BOTTLE_ONE_QUARTER_FULL = 1, BOTTLE_HALF_FULL = 2,
BOTTLE_THREE_QUARTERS_FULL = 3, BOTTLE_FULL = 4
};
// Status of the boat
enum {
BOAT_UNFLOODED = 0, BOAT_ADRIFT = 1, BOAT_TIED_FLOATING = 2,
BOAT_TIED = 3, BOAT_GONE = 4
};
/* Miscellaneous defines */
#define TELEPORTER_COUNT 10 // Total number of teleporters
#define TELEPORTER_WORK_COUNT 6 // Total number that actually work
class NebularGlobals : public Globals {
public:
SynchronizedList _spriteIndexes;
SynchronizedList _sequenceIndexes;
int _timebombClock, _timebombTimer;
public:
/**
* Constructor
*/
NebularGlobals();
/**
* Synchronize the globals data
*/
virtual void synchronize(Common::Serializer &s);
};
} // End of namespace Nebular
} // End of namespace MADS
#endif /* MADS_GLOBALS_NEBULAR_H */