22 #ifndef VCRUISE_RUNTIME_H 23 #define VCRUISE_RUNTIME_H 25 #include "graphics/pixelformat.h" 27 #include "common/hashmap.h" 28 #include "common/keyboard.h" 29 #include "common/mutex.h" 30 #include "common/rect.h" 32 #include "vcruise/detection.h" 39 class MemoryReadStream;
49 class SeekableAudioStream;
50 class LoopingAudioStream;
57 struct WinCursorGroup;
78 static const uint kNumDirections = 8;
79 static const uint kNumHighPrecisionDirections = 256;
80 static const uint kHighPrecisionDirectionMultiplier = kNumHighPrecisionDirections / kNumDirections;
81 static const uint kNumStartConfigs = 3;
84 kStartConfigCheatMenu,
94 class RuntimeMenuInterface;
98 struct IScriptCompilerGlobalState;
100 struct RoomScriptSet;
101 struct SoundLoopInfo;
102 class SampleLoopAudioStream;
103 struct AD2044Graphics;
107 kGameStateWaitingForAnimation,
108 kGameStateWaitingForAnimationToDelay,
109 kGameStateWaitingForFacing,
110 kGameStateWaitingForFacingToAnim,
115 kGameStateScriptReset,
117 kGameStateGyroAnimation,
128 short fwdAnimationID;
129 short revAnimationID;
158 uint16 interactionID;
170 virtual void setRoomNumber(uint roomNumber) = 0;
172 virtual void unload() = 0;
181 uint panInteractionID;
182 uint clickInteractionID;
184 uint lastHighlightedItem;
185 uint animChangeFrameOffset;
186 uint animChangeNumFrames;
227 PlaylistMap_t playlists;
268 int32 rampStartVolume;
270 int32 rampRatePerMSec;
271 uint32 rampStartTime;
272 bool rampTerminateOnCompletion;
277 uint effectiveVolume;
278 int32 effectiveBalance;
283 bool restartWhenAudible;
284 bool tryToLoopWhenRestarted;
304 uint sceneChangesRemaining;
328 int32 volumeOrDurationInSeconds;
334 ScoreSectionMap_t sections;
351 bool lockInteractions;
363 uint32 nextStartTime;
364 uint currentAlternation;
371 uint16 areaFrameIndex;
383 uint16 frameNumberInArea;
406 Fraction(uint pNumerator, uint pDenominator);
412 enum LoadGameOutcome {
413 kLoadGameOutcomeSucceeded,
415 kLoadGameOutcomeSaveDataCorrupted,
417 kLoadGameOutcomeMissingVersion,
418 kLoadGameOutcomeInvalidVersion,
419 kLoadGameOutcomeSaveIsTooNew,
420 kLoadGameOutcomeSaveIsTooOld,
445 bool tryToLoopWhenRestarted;
463 bool havePendingPostSwapScreenReset;
465 uint loadedAnimation;
466 uint animDisplayingFrame;
467 bool haveIdleAnimationLoop;
477 bool musicMuteDisabled;
514 static const uint kSaveGameIdentifier = 0x53566372;
515 static const uint kSaveGameCurrentVersion = 10;
516 static const uint kSaveGameEarliestSupportedVersion = 2;
517 static const uint kMaxStates = 2;
525 uint swapOutDirection;
527 uint8 inventoryActiveItem;
553 kOSEventTypeMouseMove,
554 kOSEventTypeLButtonDown,
555 kOSEventTypeLButtonUp,
557 kOSEventTypeKeymappedEvent,
560 enum KeymappedEvent {
563 kKeymappedEventEscape,
565 kKeymappedEventSaveGame,
566 kKeymappedEventLoadGame,
567 kKeymappedEventSoundSettings,
569 kKeymappedEventPause,
570 kKeymappedEventMusicToggle,
571 kKeymappedEventSoundToggle,
572 kKeymappedEventMusicVolumeDown,
573 kKeymappedEventMusicVolumeUp,
574 kKeymappedEventSoundVolumeDown,
575 kKeymappedEventSoundVolumeUp,
577 kKeymappedEventSkipAnimation,
579 kKeymappedEventPutItem,
587 KeymappedEvent keymappedEvent;
640 friend class RuntimeMenuInterface;
647 kCharSetChineseTraditional,
648 kCharSetChineseSimplified,
656 void loadCursors(
const char *exeName);
657 void setDebugMode(
bool debugMode);
658 void setFastAnimationMode(
bool fastAnimationMode);
659 void setPreloadSounds(
bool preloadSounds);
660 void setLowQualityGraphicsMode(
bool lowQualityGraphicsMode);
665 void onLButtonDown(int16 x, int16 y);
666 void onLButtonUp(int16 x, int16 y);
667 void onMouseMove(int16 x, int16 y);
668 void onKeymappedEvent(KeymappedEvent evt);
670 bool canSave(
bool onCurrentScreen)
const;
671 bool canLoad()
const;
673 void recordSaveGameSnapshot();
675 void restoreSaveGameSnapshot();
681 bool bootGame(
bool newGame);
682 static void resolveCodePageForLanguage(
Common::Language lang, Common::CodePage &outCodePage, CharSet &outCharSet);
690 enum IndexParseType {
693 kIndexParseTypeRRoom,
694 kIndexParseTypeYRoom,
695 kIndexParseTypeVRoom,
696 kIndexParseTypeTRoom,
697 kIndexParseTypeCRoom,
698 kIndexParseTypeSRoom,
699 kIndexParseTypeNameRoom,
702 enum AnimDecoderState {
703 kAnimDecoderStateStopped,
704 kAnimDecoderStatePlaying,
705 kAnimDecoderStatePaused,
708 struct IndexPrefixTypePair {
710 IndexParseType parseType;
713 struct RenderSection {
722 static const uint kMaxPreviousStates = 3;
726 int32 previousStates[kMaxPreviousStates];
727 int32 requiredPreviousStates[kMaxPreviousStates];
728 uint numPreviousStates;
729 uint numPreviousStatesRequired;
744 static const uint kNumGyros = 5;
746 Gyro gyros[kNumGyros];
748 uint completeInteraction;
749 uint failureInteraction;
750 uint frameSeparation;
762 int32 dragCurrentState;
763 bool isWaitingForAnimation;
766 enum PanoramaCursorFlags {
767 kPanCursorDraggableHoriz = (1 << 0),
768 kPanCursorDraggableUp = (1 << 1),
769 kPanCursorDraggableDown = (1 << 2),
771 kPanCursorDirectionUp = (0 << 3),
772 kPanCursorDirectionLeft = (1 << 3),
773 kPanCursorDirectionRight = (2 << 3),
774 kPanCursorDirectionDown = (3 << 3),
776 kPanCursorMaxCount = (1 << 5),
780 kPanoramaStateInactive,
782 kPanoramaStatePanningUncertainDirection,
784 kPanoramaStatePanningLeft,
785 kPanoramaStatePanningRight,
786 kPanoramaStatePanningUp,
787 kPanoramaStatePanningDown,
790 enum InGameMenuState {
791 kInGameMenuStateInvisible,
792 kInGameMenuStateVisible,
793 kInGameMenuStateHoveringInactive,
794 kInGameMenuStateHoveringActive,
795 kInGameMenuStateClickingOver,
796 kInGameMenuStateClickingNotOver,
797 kInGameMenuStateClickingInactive,
800 enum SoundLoopBehavior {
801 kSoundLoopBehaviorNo,
802 kSoundLoopBehaviorYes,
803 kSoundLoopBehaviorAuto,
806 static const uint kPanLeftInteraction = 1;
807 static const uint kPanDownInteraction = 2;
808 static const uint kPanRightInteraction = 3;
809 static const uint kPanUpInteraction = 4;
811 static const uint kPanoramaLeftFlag = 1;
812 static const uint kPanoramaRightFlag = 2;
813 static const uint kPanoramaUpFlag = 4;
814 static const uint kPanoramaDownFlag = 8;
815 static const uint kPanoramaHorizFlags = (kPanoramaLeftFlag | kPanoramaRightFlag);
817 static const uint kNumInventorySlots = 6;
818 static const uint kNumInventoryPages = 8;
820 typedef int32 ScriptArg_t;
821 typedef int32 StackInt_t;
824 enum StackValueType {
841 StackValue(
const StackValue &other);
842 StackValue(StackValue &&other);
843 explicit StackValue(StackInt_t i);
848 StackValue &operator=(
const StackValue &other);
849 StackValue &operator=(StackValue &&other);
855 struct CallStackFrame {
859 uint _nextInstruction;
867 uint durationInDeciseconds;
871 struct SubtitleQueueItem {
880 bool runHorizontalPan(
bool isRight);
882 bool requireAvailableStack(uint n);
883 bool runWaitForAnimation();
884 bool runWaitForAnimationToDelay();
885 bool runWaitForFacing();
886 bool runWaitForFacingToAnim();
888 bool runGyroAnimation();
890 void continuePlayingAnimation(
bool loop,
bool useStopFrame,
bool &outEndedAnimation);
891 void drawSectionToScreen(
const RenderSection §ion,
const Common::Rect &rect);
892 void commitSectionToScreen(
const RenderSection §ion,
const Common::Rect &rect);
893 void terminateScript();
896 bool checkCompletionConditions();
898 void startTerminatingHorizontalPan(
bool isRight);
901 void queueOSEvent(
const OSEvent &evt);
903 void processUniversalKeymappedEvents(KeymappedEvent evt);
905 void loadReahSchizmIndex();
906 void loadAD2044ExecutableResources();
908 void loadConfig(
const char *cfgPath);
910 void loadDuplicateRooms();
911 void loadAllSchizmScreenNames();
916 void resolveSoundByNameOrID(
const StackValue &stackValue,
bool load, StackInt_t &outSoundID,
SoundInstance *&outWave);
918 void changeToScreen(uint roomNumber, uint screenNumber);
919 void clearIdleAnimations();
921 void changeToExamineItem();
922 void returnFromExaminingItem();
923 bool triggerPreIdleActions();
924 void returnToIdleState();
926 void refreshCursor(uint32 currentTime);
927 bool dischargeIdleMouseMove();
928 bool dischargeIdleMouseDown();
929 bool dischargeIdleClick();
934 void changeMusicTrack(
int musicID);
935 void startScoreSection();
936 void setMusicMute(
bool muted);
938 void changeAnimation(
const AnimationDef &animDef,
bool consumeFPSOverride);
939 void changeAnimation(
const AnimationDef &animDef, uint initialFrame,
bool consumeFPSOverride);
940 void changeAnimation(
const AnimationDef &animDef, uint initialFrame,
bool consumeFPSOverride,
const Fraction &defaultFrameRate);
941 void applyAnimationVolume();
944 void triggerSound(SoundLoopBehavior loopBehavior,
SoundInstance &sound, int32 volume, int32 balance,
bool is3D,
bool isSpeech);
945 void triggerSoundRamp(
SoundInstance &sound, uint durationMSec, int32 newVolume,
bool terminateOnCompletion);
948 void updateSounds(uint32 timestamp);
949 void updateSubtitles();
950 void update3DSounds();
952 void triggerAmbientSounds();
953 uint decibelsToLinear(
int db, uint baseVolume, uint maxVolume)
const;
954 int32 getSilentSoundVolume()
const;
955 int32 getDefaultSoundVolume()
const;
956 uint applyVolumeScale(int32 volume)
const;
957 int applyBalanceScale(int32 balance)
const;
960 void stopSubtitles();
962 AnimationDef stackArgsToAnimDef(
const StackInt_t *args)
const;
963 void consumeAnimChangeAndAdjustAnim(
AnimationDef &animDef);
970 void allocateRoomsUpTo(uint roomNumber);
972 void drawDebugOverlay();
976 void detectPanoramaDirections();
977 void detectPanoramaMouseMovement(uint32 timestamp);
978 void panoramaActivate();
980 bool computeFaceDirectionAnimation(uint desiredDirection,
const AnimationDef *&outAnimDef, uint &outInitialFrame, uint &outStopFrame);
982 void inventoryAddItem(uint item);
983 void inventoryRemoveItem(uint item);
987 void redrawSubtitleSection();
988 void clearSubtitleSection();
990 void drawInventory(uint slot);
992 bool isTrayVisible()
const;
993 void resetInventoryHighlights();
994 void loadInventoryFromPage();
995 void copyInventoryToPage();
997 static uint32 getLocationForScreen(uint roomNumber, uint screenNumber);
998 void updatePlacedItemCache();
999 void drawPlacedItemGraphic();
1000 void clearPlacedItemGraphic();
1001 void drawActiveItemGraphic();
1002 void clearActiveItemGraphic();
1003 void drawInventoryItemGraphic(uint slot);
1004 void clearInventoryItemGraphic(uint slot);
1005 void dropActiveItem();
1006 void pickupPlacedItem();
1007 void stashActiveItemToInventory(uint slot);
1008 void pickupInventoryItem(uint slot);
1014 bool loadSubtitles(Common::CodePage codePage,
bool guessCodePage);
1016 void changeToMenuPage(
MenuPage *menuPage);
1018 void checkInGameMenuHover();
1019 void dismissInGameMenu();
1020 void dischargeInGameMenuMouseUp();
1021 void drawInGameMenuButton(uint element);
1026 void clearCircuitPuzzle();
1027 void clearCircuitHighlightRect(
const Common::Rect &rect);
1028 void drawCircuitHighlightRect(
const Common::Rect &rect);
1036 void scriptOpNumber(ScriptArg_t arg);
1037 void scriptOpRotate(ScriptArg_t arg);
1038 void scriptOpAngle(ScriptArg_t arg);
1039 void scriptOpAngleGGet(ScriptArg_t arg);
1040 void scriptOpSpeed(ScriptArg_t arg);
1041 void scriptOpSAnimL(ScriptArg_t arg);
1042 void scriptOpChangeL(ScriptArg_t arg);
1044 void scriptOpAnimR(ScriptArg_t arg);
1045 void scriptOpAnimF(ScriptArg_t arg);
1046 void scriptOpAnimN(ScriptArg_t arg);
1047 void scriptOpAnimG(ScriptArg_t arg);
1048 void scriptOpAnimS(ScriptArg_t arg);
1049 void scriptOpAnim(ScriptArg_t arg);
1051 void scriptOpStatic(ScriptArg_t arg);
1052 void scriptOpVarLoad(ScriptArg_t arg);
1053 void scriptOpVarStore(ScriptArg_t arg);
1054 void scriptOpVarAddAndStore(ScriptArg_t arg);
1055 void scriptOpVarGlobalLoad(ScriptArg_t arg);
1056 void scriptOpVarGlobalStore(ScriptArg_t arg);
1058 void scriptOpItemCheck(ScriptArg_t arg);
1059 void scriptOpItemRemove(ScriptArg_t arg);
1060 void scriptOpItemHighlightSet(ScriptArg_t arg);
1061 void scriptOpItemAdd(ScriptArg_t arg);
1062 void scriptOpItemHaveSpace(ScriptArg_t arg);
1063 void scriptOpItemClear(ScriptArg_t arg);
1065 void scriptOpSetCursor(ScriptArg_t arg);
1066 void scriptOpSetRoom(ScriptArg_t arg);
1067 void scriptOpLMB(ScriptArg_t arg);
1068 void scriptOpLMB1(ScriptArg_t arg);
1069 void scriptOpSoundS1(ScriptArg_t arg);
1070 void scriptOpSoundS2(ScriptArg_t arg);
1071 void scriptOpSoundS3(ScriptArg_t arg);
1072 void scriptOpSoundL1(ScriptArg_t arg);
1073 void scriptOpSoundL2(ScriptArg_t arg);
1074 void scriptOpSoundL3(ScriptArg_t arg);
1075 void scriptOp3DSoundS2(ScriptArg_t arg);
1076 void scriptOp3DSoundL2(ScriptArg_t arg);
1077 void scriptOp3DSoundL3(ScriptArg_t arg);
1078 void scriptOpStopAL(ScriptArg_t arg);
1079 void scriptOpRange(ScriptArg_t arg);
1080 void scriptOpAddXSound(ScriptArg_t arg);
1081 void scriptOpClrXSound(ScriptArg_t arg);
1082 void scriptOpStopSndLA(ScriptArg_t arg);
1083 void scriptOpStopSndLO(ScriptArg_t arg);
1085 void scriptOpMusic(ScriptArg_t arg);
1086 void scriptOpMusicVolRamp(ScriptArg_t arg);
1087 void scriptOpParm0(ScriptArg_t arg);
1088 void scriptOpParm1(ScriptArg_t arg);
1089 void scriptOpParm2(ScriptArg_t arg);
1090 void scriptOpParm3(ScriptArg_t arg);
1091 void scriptOpParmG(ScriptArg_t arg);
1092 void scriptOpSParmX(ScriptArg_t arg);
1093 void scriptOpSAnimX(ScriptArg_t arg);
1095 void scriptOpVolumeDn2(ScriptArg_t arg);
1096 void scriptOpVolumeDn3(ScriptArg_t arg);
1097 void scriptOpVolumeDn4(ScriptArg_t arg);
1098 void scriptOpVolumeUp3(ScriptArg_t arg);
1099 void scriptOpRandom(ScriptArg_t arg);
1100 void scriptOpDrop(ScriptArg_t arg);
1101 void scriptOpDup(ScriptArg_t arg);
1102 void scriptOpSwap(ScriptArg_t arg);
1103 void scriptOpSay1(ScriptArg_t arg);
1104 void scriptOpSay2(ScriptArg_t arg);
1105 void scriptOpSay3(ScriptArg_t arg);
1106 void scriptOpSay3Get(ScriptArg_t arg);
1107 void scriptOpSetTimer(ScriptArg_t arg);
1108 void scriptOpGetTimer(ScriptArg_t arg);
1109 void scriptOpDelay(ScriptArg_t arg);
1110 void scriptOpLoSet(ScriptArg_t arg);
1111 void scriptOpLoGet(ScriptArg_t arg);
1112 void scriptOpHiSet(ScriptArg_t arg);
1113 void scriptOpHiGet(ScriptArg_t arg);
1115 void scriptOpNot(ScriptArg_t arg);
1116 void scriptOpAnd(ScriptArg_t arg);
1117 void scriptOpOr(ScriptArg_t arg);
1118 void scriptOpAdd(ScriptArg_t arg);
1119 void scriptOpSub(ScriptArg_t arg);
1120 void scriptOpNegate(ScriptArg_t arg);
1121 void scriptOpCmpEq(ScriptArg_t arg);
1122 void scriptOpCmpLt(ScriptArg_t arg);
1123 void scriptOpCmpGt(ScriptArg_t arg);
1125 void scriptOpBitLoad(ScriptArg_t arg);
1126 void scriptOpBitSet0(ScriptArg_t arg);
1127 void scriptOpBitSet1(ScriptArg_t arg);
1129 void scriptOpDisc1(ScriptArg_t arg);
1130 void scriptOpDisc2(ScriptArg_t arg);
1131 void scriptOpDisc3(ScriptArg_t arg);
1133 void scriptOpGoto(ScriptArg_t arg);
1135 void scriptOpEscOn(ScriptArg_t arg);
1136 void scriptOpEscOff(ScriptArg_t arg);
1137 void scriptOpEscGet(ScriptArg_t arg);
1138 void scriptOpBackStart(ScriptArg_t arg);
1139 void scriptOpSaveAs(ScriptArg_t arg);
1140 void scriptOpSave0(ScriptArg_t arg);
1141 void scriptOpExit(ScriptArg_t arg);
1142 void scriptOpAllowSaves(ScriptArg_t arg);
1144 void scriptOpAnimName(ScriptArg_t arg);
1145 void scriptOpValueName(ScriptArg_t arg);
1146 void scriptOpVarName(ScriptArg_t arg);
1147 void scriptOpSoundName(ScriptArg_t arg);
1148 void scriptOpCursorName(ScriptArg_t arg);
1149 void scriptOpDubbing(ScriptArg_t arg);
1151 void scriptOpCheckValue(ScriptArg_t arg);
1152 void scriptOpJump(ScriptArg_t arg);
1154 void scriptOpVerticalPanSet(
bool *flags);
1155 void scriptOpVerticalPanGet();
1158 void scriptOpCallFunction(ScriptArg_t arg);
1160 void scriptOpMusicStop(ScriptArg_t arg);
1161 void scriptOpMusicPlayScore(ScriptArg_t arg);
1162 void scriptOpScoreAlways(ScriptArg_t arg);
1163 void scriptOpScoreNormal(ScriptArg_t arg);
1164 void scriptOpSndPlay(ScriptArg_t arg);
1165 void scriptOpSndPlayEx(ScriptArg_t arg);
1166 void scriptOpSndPlay3D(ScriptArg_t arg);
1167 void scriptOpSndPlaying(ScriptArg_t arg);
1168 void scriptOpSndWait(ScriptArg_t arg);
1169 void scriptOpSndHalt(ScriptArg_t arg);
1170 void scriptOpSndToBack(ScriptArg_t arg);
1171 void scriptOpSndStop(ScriptArg_t arg);
1172 void scriptOpSndStopAll(ScriptArg_t arg);
1173 void scriptOpSndAddRandom(ScriptArg_t arg);
1174 void scriptOpSndClearRandom(ScriptArg_t arg);
1175 void scriptOpVolumeAdd(ScriptArg_t arg);
1176 void scriptOpVolumeChange(ScriptArg_t arg);
1177 void scriptOpAnimVolume(ScriptArg_t arg);
1178 void scriptOpAnimChange(ScriptArg_t arg);
1179 void scriptOpScreenName(ScriptArg_t arg);
1180 void scriptOpExtractByte(ScriptArg_t arg);
1181 void scriptOpInsertByte(ScriptArg_t arg);
1182 void scriptOpString(ScriptArg_t arg);
1183 void scriptOpCmpNE(ScriptArg_t arg);
1184 void scriptOpCmpLE(ScriptArg_t arg);
1185 void scriptOpCmpGE(ScriptArg_t arg);
1186 void scriptOpReturn(ScriptArg_t arg);
1187 void scriptOpSpeech(ScriptArg_t arg);
1188 void scriptOpSpeechEx(ScriptArg_t arg);
1189 void scriptOpSpeechTest(ScriptArg_t arg);
1190 void scriptOpSay(ScriptArg_t arg);
1191 void scriptOpRandomInclusive(ScriptArg_t arg);
1192 void scriptOpHeroOut(ScriptArg_t arg);
1193 void scriptOpHeroGetPos(ScriptArg_t arg);
1194 void scriptOpHeroSetPos(ScriptArg_t arg);
1195 void scriptOpHeroGet(ScriptArg_t arg);
1196 void scriptOpGarbage(ScriptArg_t arg);
1197 void scriptOpGetRoom(ScriptArg_t arg);
1198 void scriptOpBitAnd(ScriptArg_t arg);
1199 void scriptOpBitOr(ScriptArg_t arg);
1200 void scriptOpAngleGet(ScriptArg_t arg);
1201 void scriptOpIsDVDVersion(ScriptArg_t arg);
1202 void scriptOpIsCDVersion(ScriptArg_t arg);
1203 void scriptOpDisc(ScriptArg_t arg);
1204 void scriptOpHidePanel(ScriptArg_t arg);
1205 void scriptOpRotateUpdate(ScriptArg_t arg);
1206 void scriptOpMul(ScriptArg_t arg);
1207 void scriptOpDiv(ScriptArg_t arg);
1208 void scriptOpMod(ScriptArg_t arg);
1209 void scriptOpGetDigit(ScriptArg_t arg);
1210 void scriptOpPuzzleInit(ScriptArg_t arg);
1211 void scriptOpPuzzleCanPress(ScriptArg_t arg);
1212 void scriptOpPuzzleDoMove1(ScriptArg_t arg);
1213 void scriptOpPuzzleDoMove2(ScriptArg_t arg);
1214 void scriptOpPuzzleDone(ScriptArg_t arg);
1215 void scriptOpPuzzleWhoWon(ScriptArg_t arg);
1216 void scriptOpFn(ScriptArg_t arg);
1217 void scriptOpItemHighlightSetTrue(ScriptArg_t arg);
1220 void scriptOpAnimAD2044(
bool isForward);
1221 void scriptOpAnimT(ScriptArg_t arg);
1222 void scriptOpAnimForward(ScriptArg_t arg);
1223 void scriptOpAnimReverse(ScriptArg_t arg);
1224 void scriptOpAnimKForward(ScriptArg_t arg);
1225 void scriptOpNoUpdate(ScriptArg_t arg);
1226 void scriptOpNoClear(ScriptArg_t arg);
1227 void scriptOpSay1_AD2044(ScriptArg_t arg);
1228 void scriptOpSay2_AD2044(ScriptArg_t arg);
1229 void scriptOpSay1Rnd(ScriptArg_t arg);
1230 void scriptOpM(ScriptArg_t arg);
1231 void scriptOpEM(ScriptArg_t arg);
1232 void scriptOpSE(ScriptArg_t arg);
1233 void scriptOpSDot(ScriptArg_t arg);
1234 void scriptOpE(ScriptArg_t arg);
1235 void scriptOpDot(ScriptArg_t arg);
1236 void scriptOpSound(ScriptArg_t arg);
1237 void scriptOpISound(ScriptArg_t arg);
1238 void scriptOpUSound(ScriptArg_t arg);
1239 void scriptOpSayCycle_AD2044(
const StackInt_t *values, uint numValues);
1240 void scriptOpSay2K(ScriptArg_t arg);
1241 void scriptOpSay3K(ScriptArg_t arg);
1242 void scriptOpRGet(ScriptArg_t arg);
1243 void scriptOpRSet(ScriptArg_t arg);
1244 void scriptOpEndRSet(ScriptArg_t arg);
1245 void scriptOpStop(ScriptArg_t arg);
1251 InventoryItem _inventoryPages[kNumInventoryPages][kNumInventorySlots];
1253 uint8 _inventoryActivePage;
1266 uint _panCursors[kPanCursorMaxCount];
1279 uint _swapOutScreen;
1280 uint _swapOutDirection;
1286 bool _haveHorizPanAnimations;
1287 bool _havePanUpFromDirection[kNumDirections];
1288 bool _havePanDownFromDirection[kNumDirections];
1291 bool _haveIdleAnimations[kNumDirections];
1292 bool _haveIdleStaticAnimation;
1293 bool _keepStaticAnimationInIdle;
1297 uint32 _delayCompletionTime;
1308 uint _panoramaDirectionFlags;
1310 uint _loadedRoomNumber;
1311 uint _activeScreenNumber;
1312 bool _havePendingScreenChange;
1313 bool _forceScreenChange;
1323 bool _havePendingPreIdleActions;
1324 bool _havePendingReturnToIdleState;
1325 bool _havePendingPostSwapScreenReset;
1327 bool _havePendingCompletionCheck;
1328 GameState _gameState;
1333 bool _havePendingPlayAmbientSounds;
1334 uint32 _ambientSoundFinishTime;
1338 bool _fastAnimationMode;
1339 bool _preloadSounds;
1340 bool _lowQualityGraphicsMode;
1342 VCruiseGameID _gameID;
1346 RoomToScreenNameToRoomMap_t _globalRoomScreenNameToScreenIDs;
1364 bool _musicMuteDisabled;
1368 uint32 _scoreSectionEndTime;
1371 uint32 _musicVolumeRampStartTime;
1372 int32 _musicVolumeRampStartVolume;
1373 int32 _musicVolumeRampRatePerMSec;
1374 int32 _musicVolumeRampEnd;
1380 AnimDecoderState _animDecoderState;
1381 bool _animTerminateAtStartOfFrame;
1382 uint _animPendingDecodeFrame;
1383 uint _animDisplayingFrame;
1384 uint _animFirstFrame;
1385 uint _animLastFrame;
1386 uint _animStopFrame;
1390 uint32 _animStartTime;
1391 uint32 _animFramesDecoded;
1392 uint _loadedAnimation;
1393 bool _loadedAnimationHasSound;
1394 bool _animPlayWhileIdle;
1408 bool _idleLockInteractions;
1409 bool _idleIsOnInteraction;
1410 bool _idleHaveClickInteraction;
1411 bool _idleHaveDragInteraction;
1412 uint _idleInteractionID;
1414 bool _idleIsOnOpenCircuitPuzzleLink;
1417 bool _idleIsCircuitPuzzleLinkDown;
1420 bool _forceAllowSaves;
1422 InGameMenuState _inGameMenuState;
1423 uint _inGameMenuActiveElement;
1424 bool _inGameMenuButtonActive[5];
1431 RenderSection _gameSection;
1432 RenderSection _gameDebugBackBuffer;
1433 RenderSection _menuSection;
1434 RenderSection _traySection;
1435 RenderSection _fullscreenMenuSection;
1436 RenderSection _subtitleSection;
1437 RenderSection _placedItemBackBufferSection;
1441 uint32 _lmbDownTime;
1442 int _lmbDragTolerance;
1445 bool _lmbReleaseWasClick;
1447 PanoramaState _panoramaState;
1466 int32 _listenerAngle;
1472 static const uint kAnimDefStackArgs = 8;
1474 static const uint kCursorArrow = 0;
1475 static const uint kCursorWait = 29;
1477 static const int kPanoramaPanningMarginX = 11;
1478 static const int kPanoramaPanningMarginY = 11;
1480 static const uint kSoundCacheSize = 16;
1482 static const uint kExamineItemInteractionID = 0xfffffff0u;
1484 static const uint kReturnInventorySlot0InteractionID = 0xfffffff1u;
1485 static const uint kReturnInventorySlot1InteractionID = 0xfffffff2u;
1486 static const uint kReturnInventorySlot2InteractionID = 0xfffffff3u;
1487 static const uint kReturnInventorySlot3InteractionID = 0xfffffff4u;
1488 static const uint kReturnInventorySlot4InteractionID = 0xfffffff5u;
1489 static const uint kReturnInventorySlot5InteractionID = 0xfffffff6u;
1491 static const uint kPickupInventorySlot0InteractionID = 0xfffffff7u;
1492 static const uint kPickupInventorySlot1InteractionID = 0xfffffff8u;
1493 static const uint kPickupInventorySlot2InteractionID = 0xfffffff9u;
1494 static const uint kPickupInventorySlot3InteractionID = 0xfffffffau;
1495 static const uint kPickupInventorySlot4InteractionID = 0xfffffffbu;
1496 static const uint kPickupInventorySlot5InteractionID = 0xfffffffcu;
1498 static const uint kObjectPickupInteractionID = 0xfffffffdu;
1499 static const uint kObjectDropInteractionID = 0xfffffffeu;
1501 static const uint kHeroChangeInteractionID = 0xffffffffu;
1504 uint _soundCacheIndex;
1513 uint _defaultLanguageIndex;
1514 uint _languageIndex;
1526 AnimSubtitleMap_t _animSubtitles;
1529 bool _isDisplayingSubtitles;
1530 bool _isSubtitleSourceAnimation;
1540 uint32 _cursorTimeBase;
1541 uint32 _cursorCycleLength;
1543 int32 _dbToVolume[49];
Definition: runtime.h:435
Definition: managed_surface.h:51
Definition: runtime.h:295
Definition: runtime.h:213
Definition: runtime.h:346
Definition: runtime.h:425
Definition: runtime.h:829
Definition: runtime.h:612
Definition: runtime.h:357
Definition: runtime.h:132
Definition: runtime.h:625
Definition: runtime.h:591
Definition: runtime.h:424
Definition: runtime.h:377
Definition: runtime.h:395
Definition: runtime.h:231
Definition: runtime.h:487
Definition: runtime.h:196
Definition: mididrv.h:309
Definition: runtime.h:404
Definition: runtime.h:125
Definition: runtime.h:259
Definition: runtime.h:166
Definition: runtime.h:337
Definition: ad2044_items.h:27
Definition: atari-cursor.h:38
Definition: runtime.h:178
Definition: runtime.h:203
Definition: runtime.h:638
Definition: runtime.h:246
Definition: runtime.h:626
Definition: algorithm.h:29
Definition: formatinfo.h:28
Definition: runtime.h:144
Definition: runtime.h:488
Definition: runtime.h:387
Definition: runtime.h:367
Definition: runtime.h:154
Definition: runtime.h:331
Definition: runtime.h:219
Definition: runtime.h:499
Definition: avi_frames.h:36
Definition: runtime.h:582
Definition: movie_decoder.h:32
Definition: runtime.h:310
Definition: runtime.h:603
Definition: runtime.h:162
Definition: runtime.h:323
Language
Definition: language.h:45