22 #ifndef HARVESTER_SCRIPT_H 23 #define HARVESTER_SCRIPT_H 25 #include "common/array.h" 26 #include "common/str.h" 27 #include "harvester/monster.h" 35 class ResourceManager;
50 int initialPanelIndex = 0;
72 int maxZScalePercent = 100;
73 float perspectiveScale = 0.0f;
74 float zVelocityStep = 1.0f;
83 bool dimmable =
false;
107 bool operatable =
false;
108 bool visible =
false;
109 bool runtimeVisible =
false;
110 bool identShown =
false;
122 bool visible =
false;
123 bool looping =
false;
124 bool backward =
false;
125 bool pingPong =
false;
127 bool runtimeActive =
false;
128 bool runtimeVisible =
false;
129 int runtimeState = -1;
142 bool deathOrMonsterfyFlag =
false;
143 bool runtimeSpawned =
false;
144 int runtimeState = -1;
146 bool visible =
false;
147 bool savedVisible =
false;
148 int deathDamageType = 0;
154 int initialValue = 0;
155 int currentValue = 0;
159 bool enabled =
false;
160 bool looping =
false;
171 int desiredFacing = -1;
176 bool startEnabled =
false;
177 bool cursorEnabled =
false;
217 enum StartupDialogueTextMode {
218 kStartupDialogueTextNone = 0,
219 kStartupDialogueTextYes = 1,
220 kStartupDialogueTextClick = 2
223 enum StartupAudioCommandType {
224 kStartupAudioCommandStartWav,
225 kStartupAudioCommandStartSingleWav,
226 kStartupAudioCommandLoadWav,
227 kStartupAudioCommandPlayWav,
228 kStartupAudioCommandDeleteWav
232 StartupAudioCommandType type = kStartupAudioCommandStartWav;
247 int roomMaxZScreenY = 0;
248 int roomMinZScreenY = 0;
249 int roomFullScaleZ = 0;
250 int roomMaxZScalePercent = 100;
251 float roomPerspectiveScale = 0.0f;
252 float roomZVelocityStep = 1.0f;
253 bool hasEntrance =
false;
254 int playerSpawnX = 0;
255 int playerSpawnY = 0;
256 int playerSpawnZ = 0;
257 int playerFacing = -1;
258 float paletteBrightness = 1.0f;
280 const char *roomName()
const {
281 return _roomName ? _roomName->c_str() :
"";
292 enum StartupRoomTransitionKind {
293 kStartupRoomTransitionNone = 0,
294 kStartupRoomTransitionChangeRoom,
295 kStartupRoomTransitionCloseup
298 enum StartupLightingCommand {
299 kStartupLightingCommandNone = 0,
300 kStartupLightingCommandDim,
301 kStartupLightingCommandNormal,
302 kStartupLightingCommandBlack,
303 kStartupLightingCommandFadeIn
323 StartupRoomTransitionKind roomTransition = kStartupRoomTransitionNone;
324 StartupLightingCommand lightingCommand = kStartupLightingCommandNone;
325 int cdChangeDisc = 0;
326 int playerDeathDamageType = 0;
329 bool requestPlayerDeath =
false;
330 bool requestPlayerGotoXZ =
false;
331 bool requestPlayerGotoZ =
false;
332 bool requestRoomRestart =
false;
334 bool requestCloseupExit =
false;
335 bool requestMainMenu =
false;
336 bool requestDemoEnding =
false;
337 bool abortRemainingCommandChain =
false;
338 bool mutatedRuntimeState =
false;
339 bool visualRuntimeStateChanged =
false;
344 static const int kDefaultPlayerHitPoints = 30;
367 bool isQuickTipsEnabled()
const {
return _quickTipsEnabled; }
368 void setQuickTipsEnabled(
bool enabled) { _quickTipsEnabled = enabled; }
370 bool isGoreEnabled()
const {
return _goreEnabled; }
371 void setGoreEnabled(
bool enabled) { _goreEnabled = enabled; }
372 StartupDialogueTextMode getDialogueTextMode()
const {
return _dialogueTextMode; }
373 void setDialogueTextMode(StartupDialogueTextMode mode) { _dialogueTextMode = mode; }
374 int getFxVolumeLevel()
const {
return _fxVolumeLevel; }
375 void setFxVolumeLevel(
int level);
376 int getMusicVolumeLevel()
const {
return _musicVolumeLevel; }
377 void setMusicVolumeLevel(
int level);
378 int getGammaLevel()
const {
return _gammaLevel; }
379 void setGammaLevel(
int level);
380 const Common::String &getParentalPassword()
const {
return _parentalPassword; }
381 void setParentalPassword(
const Common::String &password) { _parentalPassword = password; }
382 bool saveConfig()
const;
383 void resetRuntimeState();
401 bool allowTransitions =
true);
407 bool allowTransitions =
true);
409 bool isPickupBlockedByAction(
const ObjectRecord &
object,
411 bool hasObjectInteraction(
const ObjectRecord &
object)
const;
427 bool setRuntimeFlagValue(
const Common::String &flagName,
bool value);
428 bool resetRuntimeObjectToInitialState(
const Common::String &objectName);
429 bool addRuntimeObjectToInventory(
const Common::String &objectName);
430 bool syncRuntimeObjectRecord(
const ObjectRecord &
object);
433 bool setRuntimeNpcState(
const Common::String &npcName,
bool active,
bool visible);
434 bool queueRuntimeNpcDeathOrMonsterfy(
const Common::String &npcName,
int deathDamageType = 0);
435 enum { kNoMonsterfyPosZOverride = 0x7fffffff };
436 bool finalizeRuntimeNpcDeathOrMonsterfy(
const Common::String &npcName,
int deathDamageType = 0,
437 bool preserveCorpse =
false,
int corpseFrame = -1,
438 int monsterfyPosZ = kNoMonsterfyPosZOverride);
439 void pushDeferredLiveNpcDeathTransitions();
440 void popDeferredLiveNpcDeathTransitions();
441 bool isNamedNpcDeathTypeClear(
const Common::String &npcName)
const;
442 int getCurrentStoryDayIndex()
const;
443 int getPlayerCurrentHitPoints()
const {
return _playerCurrentHitPoints; }
444 int getPlayerCombatLoadout()
const {
return _playerCombatLoadout; }
445 int getPlayerCombatResourceCount(
int loadout)
const;
446 bool consumePlayerCombatResourceUnit(
int loadout);
447 bool isPlayerControlPaused()
const {
return _playerControlPaused; }
448 bool setPlayerCurrentHitPoints(
int hitPoints);
449 bool adjustPlayerCurrentHitPoints(
int delta);
450 bool setPlayerCombatResourceCount(
int loadout,
int count);
451 bool setPlayerCombatLoadout(
int loadout);
452 bool setPlayerControlPaused(
bool paused);
453 bool syncRuntimeAnimState(
const Common::String &animName,
bool active,
bool visible,
int currentFrame);
455 bool syncRuntimeTimerRecord(
const TimerRecord &timer);
456 bool setRuntimeRegionEnabled(
const Common::String ®ionName,
bool enabled);
457 bool setRuntimeTimerEnabled(
const Common::String &timerName,
bool enabled);
460 static const char *
const kInventoryOwnerName;
461 static const int kDefaultPlayerCombatLoadout;
463 struct CommandExecutionContext {
467 bool allowTransitions;
470 enum CommandOutputPolicy {
471 kCommandOutputsInteraction,
473 kCommandOutputsRoomExit
476 enum CommandStepResult {
535 void executeCommandChain(
const Common::String &initialTag,
const CommandExecutionContext &context,
537 CommandStepResult executeCommand(
const CommandRecord &command,
538 const CommandExecutionContext &context, CommandOutputPolicy outputPolicy,
540 CommandStepResult executeBranchCommand(
const CommandRecord &command,
542 CommandStepResult executeAudioCommand(
const CommandRecord &command,
544 CommandStepResult executeObjectCommand(
const CommandRecord &command,
546 CommandStepResult executeAnimationCommand(
const CommandRecord &command,
548 CommandStepResult executeRegionCommand(
const CommandRecord &command,
550 CommandStepResult executeNpcCommand(
const CommandRecord &command,
552 CommandStepResult executeMonsterCommand(
const CommandRecord &command,
554 CommandStepResult executeTimerCommand(
const CommandRecord &command,
556 CommandStepResult executeExecListCommand(
const CommandRecord &command,
557 const CommandExecutionContext &context, CommandOutputPolicy outputPolicy,
InteractionResult &result);
558 CommandStepResult executeModalCommand(
const CommandRecord &command,
560 CommandStepResult executePlayerCommand(
const CommandRecord &command,
562 CommandStepResult executeMovementCommand(
const CommandRecord &command,
564 CommandStepResult executeTransitionCommand(
const CommandRecord &command,
565 const CommandExecutionContext &context, CommandOutputPolicy outputPolicy,
InteractionResult &result);
566 static bool hasDeferredInteractionOutputs(
const InteractionResult &result, CommandOutputPolicy outputPolicy);
567 static int resolveCombatResourcePickupMax(
int loadout);
568 bool probePickupBlockingCommandChain(
const Common::String &initialTag,
570 bool hasActionableCommandChain(
const Common::String &initialTag)
const;
571 int *getPlayerCombatResourceCountPtr(
int loadout);
572 const int *getPlayerCombatResourceCountPtr(
int loadout)
const;
573 bool adjustPlayerCombatResourceCount(
int loadout,
int delta,
int maxCount,
582 void logRuntimeSaveFlags(
const char *operation)
const;
583 void logRuntimeSaveObjects(
const char *operation)
const;
584 void logRuntimeSaveNpcs(
const char *operation)
const;
585 void logRuntimeSaveMonsters(
const char *operation)
const;
586 void logRuntimeSaveTimers(
const char *operation)
const;
587 static int clampPlayerHitPoints(
int hitPoints);
588 static int clampPlayerCombatLoadout(
int loadout);
589 static int clampCombatResourceCount(
int loadout,
int count);
591 int loadout,
const char *contextLabel);
592 void logRuntimeSaveState(
const char *operation)
const;
619 int _nailgunAmmoCount = 0;
620 int _shotgunShellCount = 0;
621 int _nineGunBulletCount = 0;
622 int _thirtyEightGunBulletCount = 0;
623 int _chainsawFuelCount = 0;
624 int _playerCurrentHitPoints = 30;
625 int _playerCombatLoadout = 0;
626 bool _playerControlPaused =
false;
627 int _fxVolumeLevel = 9;
628 int _musicVolumeLevel = 3;
630 bool _quickTipsEnabled =
true;
631 bool _goreEnabled =
true;
640 StartupDialogueTextMode _dialogueTextMode = kStartupDialogueTextYes;
641 int _deferredLiveNpcDeathTransitionDepth = 0;
646 #endif // HARVESTER_SCRIPT_H
Definition: room_support.h:46
Definition: serializer.h:80
Definition: algorithm.h:29
Definition: resources.h:32