22 #ifndef BLADERUNNER_BLADERUNNER_H 23 #define BLADERUNNER_BLADERUNNER_H 25 #include "bladerunner/archive.h" 27 #include "common/array.h" 28 #include "common/random.h" 29 #include "common/stream.h" 30 #include "common/keyboard.h" 31 #include "common/events.h" 33 #include "engines/engine.h" 35 #include "graphics/surface.h" 37 #include "math/cosinetables.h" 38 #include "math/sinetables.h" 41 #define BLADERUNNER_DEBUG_CONSOLE 0 42 #define BLADERUNNER_ORIGINAL_SETTINGS 0 43 #define BLADERUNNER_ORIGINAL_BUGS 0 59 kDebugScript = 1 << 0,
61 kDebugAnimation = 1 << 2
65 class ActorDialogueQueue;
100 class SliceAnimations;
104 class SuspectsDatabase;
115 static const int kArchiveCount = 12;
116 static const int kActorCount = 100;
117 static const int kActorVoiceOver = kActorCount - 1;
118 static const int kMaxCustomConcurrentRepeatableEvents = 20;
120 static const int16 kOriginalGameWidth = 640;
121 static const int16 kOriginalGameHeight = 480;
122 static const int16 kDemoGameWidth = 320;
123 static const int16 kDemoGameHeight = 200;
132 static const int kBladeRunnerScummVMVersion = 2;
134 static const char *kGameplayKeymapId;
135 static const char *kKiaKeymapId;
136 static const char *kCommonKeymapId;
139 bool _windowIsActive;
140 int _playerLosesControlCounter;
203 Actor *_actors[kActorCount];
210 bool _surfaceFrontCreated;
211 bool _surfaceBackCreated;
219 Math::CosineTable *_cosTable1024;
220 Math::SineTable *_sinTable1024;
222 bool _isWalkingInterruptible;
223 bool _interruptWalking;
224 bool _playerActorIdle;
226 bool _actorIsSpeaking;
227 bool _actorSpeakStopIsRequested;
229 bool _gameJustLaunched;
230 int _gameAutoSaveTextId;
231 bool _gameIsAutoSaving;
233 bool _sceneIsLoading;
235 bool _vqaStopIsRequested;
236 bool _subtitlesEnabled;
237 bool _showSubtitlesForTextCrawl;
240 bool _noDelayMillisFramelimiter;
241 bool _framesPerSecondMax;
242 bool _disableStaminaDrain;
243 bool _spanishCreditsCorrection;
245 bool _enhancedEdition;
246 bool _validBootParam;
249 int _walkSoundVolume;
253 uint32 _mouseClickTimeLast;
254 uint32 _mouseClickTimeDiff;
256 int _walkingToExitId;
257 bool _isInsideScriptExit;
258 int _walkingToRegionId;
259 bool _isInsideScriptRegion;
260 int _walkingToObjectId;
261 bool _isInsideScriptObject;
262 int _walkingToItemId;
263 bool _isInsideScriptItem;
264 bool _walkingToEmpty;
265 int _walkingToEmptyX;
266 int _walkingToEmptyY;
267 bool _isInsideScriptEmpty;
268 int _walkingToActorId;
269 bool _isInsideScriptActor;
271 int _actorUpdateCounter;
272 uint32 _actorUpdateTimeLast;
274 uint32 _timeOfMainGameLoopTickPrevious;
276 bool _isNonInteractiveDemo;
282 kKeyRepeatInitialDelay = 400,
283 kKeyRepeatSustainDelay = 100
287 uint32 _keyRepeatTimeLast;
288 uint32 _keyRepeatTimeDelay;
290 uint32 _customEventRepeatTimeLast;
291 uint32 _customEventRepeatTimeDelay;
299 ActiveCustomEventsArray _activeCustomEvents;
322 enum BladeRunnerEngineMappableAction {
324 kMpActionToggleCombat,
325 kMpActionCutsceneSkip,
326 kMpActionDialogueSkip,
327 kMpActionToggleKiaOptions,
328 kMpActionOpenKiaDatabase,
329 kMpActionOpenKIATabHelp,
330 kMpActionOpenKIATabSaveGame,
331 kMpActionOpenKIATabLoadGame,
332 kMpActionOpenKIATabCrimeSceneDatabase,
333 kMpActionOpenKIATabSuspectDatabase,
334 kMpActionOpenKIATabClueDatabase,
335 kMpActionOpenKIATabQuitGame,
339 kMpDeleteSelectedSvdGame,
340 kMpActionToggleCluePrivacy
370 void pauseEngineIntern(
bool pause)
override;
376 bool startup(
bool hasSavegames =
false);
377 void initChapterAndScene();
383 bool isMouseButtonDown()
const;
395 void handleMouseAction(
int x,
int y,
bool mainButton,
bool buttonDown,
int scrollDirection = 0);
396 void handleMouseClickExit(
int exitId,
int x,
int y,
bool buttonDown);
397 void handleMouseClickRegion(
int regionId,
int x,
int y,
bool buttonDown);
398 void handleMouseClickItem(
int itemId,
bool buttonDown);
399 void handleMouseClickActor(
int actorId,
bool mainButton,
bool buttonDown,
Vector3 &scenePosition,
int x,
int y);
400 void handleMouseClick3DObject(
int objectId,
bool buttonDown,
bool isClickable,
bool isTarget);
401 void handleMouseClickEmpty(
int x,
int y,
Vector3 &scenePosition,
bool buttonDown);
407 bool isAllowedRepeatedCustomEvent(
const Common::Event &currEvent);
410 void cleanupPendingRepeatingEvents(
const Common::String &keymapperId);
412 void gameWaitForActive();
413 void loopActorSpeaking();
414 void loopQueuedDialogueStillPlaying();
416 void outtakePlay(
int id,
bool no_localization,
int container = -1);
417 void outtakePlay(
const Common::String &basenameNoExt,
bool no_localization,
int container = -3);
423 bool openArchiveEnhancedEdition();
425 void syncSoundSettings()
override;
426 bool isSubtitlesEnabled();
427 void setSubtitlesEnabled(
bool newVal);
431 bool playerHasControl();
432 void playerLosesControl();
433 void playerGainsControl(
bool force =
false);
438 void newGame(
int difficulty);
439 void autoSaveGame(
int textId,
bool endgame);
448 uint8 getExtraCNotify();
449 void setExtraCNotify(uint8 val);
456 static inline void getGameDataColor(uint16 color, uint8 &a, uint8 &r, uint8 &g, uint8 &b) {
459 uint8 r5 = (color >> 10) & 0x1F;
460 uint8 g5 = (color >> 5) & 0x1F;
461 uint8 b5 = (color ) & 0x1F;
463 r = (r5 << 3) | (r5 >> 2);
464 g = (g5 << 3) | (g5 >> 2);
465 b = (b5 << 3) | (b5 >> 2);
472 static inline void drawPixel(
Graphics::Surface &surface,
void* dst, uint32 value) {
475 *(uint8*)dst = (uint8)value;
478 *(uint16*)dst = (uint16)value;
481 *(uint32*)dst = (uint32)value;
488 static inline void getPixel(
Graphics::Surface &surface,
void* dst, uint32 &value) {
491 value = (uint8)(*(uint8*)dst);
494 value = (uint16)(*(uint16*)dst);
497 value = (uint32)(*(uint32*)dst);
Definition: crimes_database.h:34
Definition: police_maze.h:80
EngineFeature
Definition: engine.h:250
Definition: obstacles.h:34
Definition: waypoints.h:35
Definition: subtitles.h:40
Definition: advancedDetector.h:120
Definition: suspects_database.h:101
Definition: ambient_sounds.h:38
Definition: end_credits.h:29
Definition: chapters.h:29
Definition: game_info.h:32
Definition: audio_player.h:45
Definition: ai_script.h:533
Definition: framelimiter.h:31
Definition: audio_speech.h:34
Definition: archive.h:141
Definition: scene_objects.h:43
Definition: game_flags.h:32
Definition: audio_mixer.h:43
Definition: algorithm.h:29
int getAutosaveSlot() const override
Definition: bladerunner.h:368
Definition: overlays.h:39
Definition: scene_script.h:526
Definition: elevator.h:34
Definition: debugger.h:56
Definition: actor_dialogue_queue.h:33
Definition: text_resource.h:32
Definition: keyboard.h:294
Definition: audio_cache.h:33
PixelFormat format
Definition: surface.h:94
Definition: slice_renderer.h:45
Definition: bladerunner.h:113
Definition: settings.h:31
Definition: item_pickup.h:31
Definition: screen_effects.h:39
Definition: slice_animations.h:39
Language
Definition: language.h:45