aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/features.h
diff options
context:
space:
mode:
authorMartin Kiewitz2016-08-13 14:58:07 +0200
committerMartin Kiewitz2016-08-13 14:58:07 +0200
commitc270b30a7937186fecd016b9a74421d633dd90c0 (patch)
tree9315baae08580c5f51b3bf07d503049680a33837 /engines/sci/engine/features.h
parent409772ea1f1986ff37656ae57a0e2b2eaf8c1b4d (diff)
downloadscummvm-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.h14
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;
};