diff options
Diffstat (limited to 'game/code/input/Mouse.h')
-rw-r--r-- | game/code/input/Mouse.h | 80 |
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 |