00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _PLAYERCONTROLLER_
00019 #define _PLAYERCONTROLLER_
00020
00021 #include <string>
00022 #include <map>
00023
00024 #include "input/InputEvent.h"
00025 #include "input/InputListener.h"
00026
00027 #include "util/Macros.h"
00028
00029 class AbstractBinding;
00030 class Attribute;
00031 class Game;
00032
00033 class PlayerController : public AbstractMouseListener, public AbstractKeyListener
00034 {
00035 private:
00036 DEFINE_STL_TYPE(std::map<CONCAT(int, AbstractBinding*)>, BindingMap);
00037
00038 Game* m_pGame;
00039
00040 BindingMap m_keyBindings;
00041 BindingMap m_mouseBindings;
00042 public:
00043 PlayerController()
00044 :m_pGame(0)
00045 {
00046 }
00047
00048 void SetGame(Game* pGame) { m_pGame = pGame; }
00049 Game * GetGame() const { return m_pGame; }
00050
00051 void BindingsFromAttributeTree(const Attribute * pRoot);
00052
00053 void AddKeyBinding(int nKey, const std::string & binding);
00054 void RemoveKeyBinding(int nKey);
00055
00056 void AddMouseBinding(int nMouseButton, const std::string & binding);
00057 void RemoveMouseBinding(int nButton);
00058
00059 virtual void OnKeyPressed(const KeyEvent& e);
00060 virtual void OnKeyReleased(const KeyEvent& e);
00061 virtual void OnMouseMove(const MouseEvent& e);
00062 virtual void OnMouseButtonPressed(const MouseEvent& e);
00063 virtual void OnMouseButtonReleased(const MouseEvent& e);
00064 };
00065
00066 #endif