diff options
author | Martin Kiewitz | 2016-08-13 14:58:07 +0200 |
---|---|---|
committer | Martin Kiewitz | 2016-08-13 14:58:07 +0200 |
commit | c270b30a7937186fecd016b9a74421d633dd90c0 (patch) | |
tree | 9315baae08580c5f51b3bf07d503049680a33837 /engines/sci/engine/features.h | |
parent | 409772ea1f1986ff37656ae57a0e2b2eaf8c1b4d (diff) | |
download | scummvm-rg350-c270b30a7937186fecd016b9a74421d633dd90c0.tar.gz scummvm-rg350-c270b30a7937186fecd016b9a74421d633dd90c0.tar.bz2 scummvm-rg350-c270b30a7937186fecd016b9a74421d633dd90c0.zip |
SCI: Fix pseudo mouse in various SCI1 games like e.g. Larry5
Pseudo mouse was functionality in SCI1+ games, that allowed the
user to control the mouse via keyboard cursor keys.
This new class only worked, when a tiny difference inside
the keyboard driver happened on kMapKeyToDir calls. We previously
tried to enable this behavior depending on cursor type, but
this didn't work correctly (Larry 5 for example was not detected
as such, but had PseudoMouse support).
Diffstat (limited to 'engines/sci/engine/features.h')
-rw-r--r-- | engines/sci/engine/features.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/engines/sci/engine/features.h b/engines/sci/engine/features.h index 1c410267e6..b2d40f400f 100644 --- a/engines/sci/engine/features.h +++ b/engines/sci/engine/features.h @@ -34,6 +34,12 @@ enum MoveCountType { kIncrementMoveCount }; +enum PseudoMouseAbilityType { + kPseudoMouseAbilityUninitialized, + kPseudoMouseAbilityFalse, + kPseudoMouseAbilityTrue +}; + class GameFeatures { public: GameFeatures(SegManager *segMan, Kernel *kernel); @@ -110,6 +116,12 @@ public: */ void forceDOSTracks() { _forceDOSTracks = true; } + /** + * Autodetects, if Pseudo Mouse ability is enabled (different behavior in keyboard driver) + * @return kPseudoMouseAbilityTrue or kPseudoMouseAbilityFalse + */ + PseudoMouseAbilityType detectPseudoMouseAbility(); + private: reg_t getDetectionAddr(const Common::String &objName, Selector slc, int methodNum = -1); @@ -130,6 +142,8 @@ private: bool _usesCdTrack; bool _forceDOSTracks; + PseudoMouseAbilityType _pseudoMouseAbility; + SegManager *_segMan; Kernel *_kernel; }; |