summaryrefslogtreecommitdiffstats
path: root/game/code/input/Mouse.h
diff options
context:
space:
mode:
authorSvxy <aidan61605@gmail.com>2023-05-31 23:31:32 +0200
committerSvxy <aidan61605@gmail.com>2023-05-31 23:31:32 +0200
commiteb4b3404aa00220d659e532151dab13d642c17a3 (patch)
tree7e1107c4995489a26c4007e41b53ea8d00ab2134 /game/code/input/Mouse.h
downloadThe-Simpsons-Hit-and-Run-eb4b3404aa00220d659e532151dab13d642c17a3.tar
The-Simpsons-Hit-and-Run-eb4b3404aa00220d659e532151dab13d642c17a3.tar.gz
The-Simpsons-Hit-and-Run-eb4b3404aa00220d659e532151dab13d642c17a3.tar.bz2
The-Simpsons-Hit-and-Run-eb4b3404aa00220d659e532151dab13d642c17a3.tar.lz
The-Simpsons-Hit-and-Run-eb4b3404aa00220d659e532151dab13d642c17a3.tar.xz
The-Simpsons-Hit-and-Run-eb4b3404aa00220d659e532151dab13d642c17a3.tar.zst
The-Simpsons-Hit-and-Run-eb4b3404aa00220d659e532151dab13d642c17a3.zip
Diffstat (limited to 'game/code/input/Mouse.h')
-rw-r--r--game/code/input/Mouse.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/game/code/input/Mouse.h b/game/code/input/Mouse.h
new file mode 100644
index 0000000..7f33402
--- /dev/null
+++ b/game/code/input/Mouse.h
@@ -0,0 +1,80 @@
+/******************************************************************************
+ File: Mouse.h
+ Desc: Interface for the Mouse class.
+ - Responsible for managing relative axis info
+ for the mouse and other mouse related stuff.
+
+ Date: May 16, 2003
+ History:
+ *****************************************************************************/
+#ifndef MOUSE_H
+#define MOUSE_H
+
+#include <input/RealController.h>
+
+struct MouseCoord
+{
+ float x, y;
+};
+
+// We need the eMouseButtons enum to provide a sequential equivalent to DIMOFS_X...
+// so that we can use them to access our arrays.
+enum eMouseButton
+{
+ MOUSE_X,
+ MOUSE_Y,
+ MOUSE_Z,
+ MOUSE_BUTTON0,
+ MOUSE_BUTTON1,
+ MOUSE_BUTTON2,
+ MOUSE_BUTTON3,
+ MOUSE_BUTTON4,
+ MOUSE_BUTTON5,
+ MOUSE_BUTTON6,
+ MOUSE_BUTTON7,
+ NUM_MOUSE_BUTTONS
+};
+
+class Mouse : public RealController
+{
+public:
+ Mouse();
+ virtual ~Mouse();
+
+ float XPos() const { return m_relPosition.x; }
+ float YPos() const { return m_relPosition.y; }
+ void setSensitivityX( float fSensitivityX ) { m_fSensitivityX = fSensitivityX; }
+ void setSensitivityY( float fSensitivityY ) { m_fSensitivityY = fSensitivityY; }
+ float getSensitivityX() const { return m_fSensitivityX; }
+ float getSensitivityY() const { return m_fSensitivityY; }
+
+ virtual bool IsMouseAxis( int dxKey ) const;
+
+ // Returns true if this is a valid input for the controller.
+ virtual bool IsValidInput( int dxKey ) const;
+
+ float CalculateMouseAxis( int mouseAxis, float value );
+
+ // Sets up a mapping from a dxkey/direction to a virtual button
+ virtual bool SetMap( int dxKey, eDirectionType dir, int virtualButton );
+ // Retrieves the virtual button of the given type mapped to a dxKey, direction
+ virtual int GetMap( int dxKey, eDirectionType dir, eMapType map ) const;
+ // Clears the specified mapping so it no longer exists.
+ virtual void ClearMap( int dxKey, eDirectionType dir, int virtualButton );
+ // Clears all the cached mappings.
+ virtual void ClearMappedButtons();
+
+
+private:
+ virtual void MapInputToDICode();
+
+ eMouseButton GetButtonEnum( int dxKey ) const;
+
+private:
+ MouseCoord m_relPosition;
+ MouseCoord m_absPosition;
+ float m_fSensitivityX;
+ float m_fSensitivityY;
+ int m_ButtonMap[ NUM_MAPTYPES ][ NUM_MOUSE_BUTTONS ][ NUM_DIRTYPES ];
+};
+#endif