RioEngine  0.1
My first attempt to create a 3D WYSIWYG Game Engine
inputmanager.h
Go to the documentation of this file.
1 //--------------------------------------------------------------- @License begins
2 // RioEngine: The late night Coke -without whores- debugging sessions
3 // 2012-2015 Leopoldo Lomas Flores. Torreon, Coahuila. MEXICO
4 // leopoldolomas [at] gmail
5 // www.rioengine.com
6 // www.leopoldolomas.info
7 // "You have a problem, you face it like a man."
8 //
9 // This is free and unencumbered software released into the public domain.
10 //
11 // Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
12 // software, either in source code form or as a compiled binary, for any purpose,
13 // commercial or non-commercial, and by any means.
14 //
15 // In jurisdictions that recognize copyright laws, the author or authors of this
16 // software dedicate any and all copyright interest in the software to the public
17 // domain. We make this dedication for the benefit of the public at large and to
18 // the detriment of our heirs and successors. We intend this dedication to be
19 // an overt act of relinquishment in perpetuity of all present and future
20 // rights to this software under copyright law.
21 //
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS
24 // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
26 // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //--------------------------------------------------------------- @License ends
29 
30 #ifndef RIOENGINE_INPUTMANAGER_INPUTMANAGER_H_
31 #define RIOENGINE_INPUTMANAGER_INPUTMANAGER_H_
32 
33 #define NOMINMAX // TODO Hack needed to include Windows.h
34 #include <Windows.h>
35 #include "constants.h"
36 #include "cengine/csingleton.h"
37 #include "inputmanager/joystick.h"
38 
39 #define INPUTMANAGER CSingleton<USERINPUT::InputManager>::getSharedInstance()
40 
41 namespace USERINPUT {
44 struct MousePosition { int x; int y; };
45 
46 
47 class InputManager {
48 public:
49  InputManager(void);
50 
54  void update();
55 
56  // ------------------------------------------- Keyboard
57  bool getAnyKeyDown();
58  bool getAnyKeyUp();
59  bool getKeyDown(int key_code);
60  bool getKeyUp (int key_code);
61 
62  // ------------------------------------------- Mouse
63  void setWheelVelocity(float wheel_velocity);
64  const float getWheelVelocity();
65 
67  void setMousePosition(const MousePosition& position);
68  bool getAnyMouseButtonDown();
69  bool getAnyMouseButtonUp();
70  bool getMouseButtonDown(MouseButtons button_number);
71  bool getMouseButtonUp (MouseButtons button_number);
72 
73  // ------------------------------------------- Joystick
76 
77  void initializeJoystick(HWND handler);
78  float rawPositionToVelocity(unsigned short raw_value);
81  bool getJoystickButtonDown(int button_number);
82  bool getJoystickButtonUp (int button_number);
83 
84  ~InputManager(void);
85 
86 private:
87  void resetStates();
88  void updateJoysticksState();
89  void updateKeyboardState();
90  void updateMouseState();
91 
92  void clearBoolArray (bool bool_array[], int array_length);
93  bool getAnyTrueValInArray(bool bool_array[], int array_length);
94 
95  void setJoystickPressedButtonsCount(int buttons_count);
96 
97  bool m_keysDown [k_KEYS_LENGTH],
98  m_keysUp [k_KEYS_LENGTH],
99  m_previousKeysDown [k_KEYS_LENGTH],
100  m_mouseButtonsDown [k_MBUTTONS_LENGTH],
101  m_mouseButtonsUp [k_MBUTTONS_LENGTH],
102  m_joystickButtonsDown [k_JOYBUTTONS_LENGTH];
103 
104  bool m_joystickEnabled;
105  float m_mouseWheelVelocity;
106  int m_joystickPressedButtonsCount;
107 
108  Joystick* m_leftJoystick;
109  Joystick* m_rightJoystick;
110  MousePosition* m_mousePosition;
111 };
112 }
113 
114 #endif // RIOENGINE_INPUTMANAGER_INPUTMANAGER_H_
bool getJoystickButtonUp(int button_number)
float rawPositionToVelocity(unsigned short raw_value)
void initializeJoystick(HWND handler)
Joystick * getLeftJoystick()
bool getKeyUp(int key_code)
const MousePosition * getMousePosition()
void setMousePosition(const MousePosition &position)
const int getJoystickButtonsPressedCount()
bool getKeyDown(int key_code)
bool getMouseButtonDown(MouseButtons button_number)
Joystick * getRightJoystick()
bool getJoystickButtonDown(int button_number)
const float getWheelVelocity()
void setWheelVelocity(float wheel_velocity)
bool getMouseButtonUp(MouseButtons button_number)