1 #ifndef HEADER_INPUTHANDLER_H
2 #define HEADER_INPUTHANDLER_H
3 
4 class KeyStroke;
5 class MouseStroke;
6 
7 #include "NoCopy.h"
8 #include "InputProvider.h"
9 
10 /**
11  * Handle input events.
12  * Events:
13  * - keyEvent() is called when new key is pressed.
14  * - mouseEvent() is called when there is a mouse click.
15  * - mouseState() is called every cycle to update mouse position
16  *
17  * Pressed keys are stored in m_pressed array, this array is shared
18  * and updated by InputAgent.
19  */
20 class InputHandler : public InputProvider, public NoCopy {
21     private:
22         Uint8 *m_pressed;
23         Uint8 m_buttons;
24         V2 m_mouseLoc;
25     public:
26         InputHandler();
takePressed(Uint8 * pressed)27         void takePressed(Uint8 *pressed) { m_pressed = pressed; }
28         void mouseState(const V2 &loc, Uint8 buttons);
29 
keyEvent(const KeyStroke &)30         virtual void keyEvent(const KeyStroke &/*stroke*/) {}
keyUp(const KeyStroke &)31         virtual void keyUp(const KeyStroke &/*stroke*/) {}
mouseEvent(const MouseStroke &)32         virtual void mouseEvent(const MouseStroke &/*buttons*/) {}
33 
34         virtual bool isPressed(SDLKey key) const;
35         virtual bool isLeftPressed() const;
36         virtual bool isMiddlePressed() const;
37         virtual bool isRightPressed() const;
getMouseLoc()38         virtual V2 getMouseLoc() const { return m_mouseLoc; }
39 
40         virtual std::string toString() const;
41 };
42 
43 #endif
44