diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-04-08 19:41:19 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-04-08 19:41:19 +0300 |
commit | 30ef016b0a14f36dc480284e2d775295b5501dd4 (patch) | |
tree | a269c0983efb8dc9160bfe10b1dba26a302aff0c /src/inputmanager.h | |
parent | 25a6eae7f4fb561bbf930be28ee09510b40ebc80 (diff) | |
download | plus-30ef016b0a14f36dc480284e2d775295b5501dd4.tar.gz plus-30ef016b0a14f36dc480284e2d775295b5501dd4.tar.bz2 plus-30ef016b0a14f36dc480284e2d775295b5501dd4.tar.xz plus-30ef016b0a14f36dc480284e2d775295b5501dd4.zip |
Move most input code from keyboardconfig to inputmanager.
Diffstat (limited to 'src/inputmanager.h')
-rw-r--r-- | src/inputmanager.h | 84 |
1 files changed, 83 insertions, 1 deletions
diff --git a/src/inputmanager.h b/src/inputmanager.h index 635e27a33..b04f15726 100644 --- a/src/inputmanager.h +++ b/src/inputmanager.h @@ -21,13 +21,44 @@ #ifndef INPUTMANAGER_H #define INPUTMANAGER_H +#include "keydata.h" + #include "gui/sdlinput.h" #include <string> #include <map> +#define KeyFunctionSize 3 + struct KeyData; -//struct KeyFunction; + +class Setup_Keyboard; + +enum KeyTypes +{ + INPUT_UNKNOWN = 0, + INPUT_KEYBOARD = 1, + INPUT_MOUSE = 2, + INPUT_JOYSTICK = 3 +}; + +struct KeyItem +{ + KeyItem() : type(-1), value(-1) + { } + + KeyItem(int type0, int value0) : type(type0), value(value0) + { } + + int type; + + int value; +}; + +struct KeyFunction +{ + KeyItem values[KeyFunctionSize]; +}; enum KeyCondition { @@ -51,6 +82,8 @@ class InputManager public: InputManager(); + void init(); + bool handleEvent(const SDL_Event &event); bool handleKeyEvent(const SDL_Event &event); @@ -58,6 +91,55 @@ class InputManager int getInputConditionMask(); bool checkKey(const KeyData *key, int mask); + + void retrieve(); + + void store(); + + void makeDefault(); + + bool hasConflicts(int &key1, int &key2); + + void callbackNewKey(); + + KeyFunction &getKey(int index); + + std::string getKeyValueString(int index) const; + + std::string getKeyStringLong(int index) const; + + void addActionKey(int action, int type, int val); + + void setNewKey(const SDL_Event &event); + + void unassignKey(); + + bool isActionActive(int index) const; + + /** + * Set the index of the new key to be assigned. + */ + void setNewKeyIndex(int value) + { mNewKeyIndex = value; } + + /** + * Set a reference to the key setup window. + */ + void setSetupKeyboard(Setup_Keyboard *setupKey) + { mSetupKey = setupKey; } + + /** + * Get the index of the new key to be assigned. + */ + int getNewKeyIndex() const + { return mNewKeyIndex; } + + protected: + Setup_Keyboard *mSetupKey; /**< Reference to setup window */ + + int mNewKeyIndex; /**< Index of new key to be assigned */ + + KeyFunction mKey[Input::KEY_TOTAL]; /**< Pointer to all the key data */ }; extern InputManager inputManager; |