diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-08-31 21:33:50 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-08-31 21:49:21 +0300 |
commit | 8a999b66fd697404c6640778a6dd1ce0e747334a (patch) | |
tree | b9d16368acff30878f28264286b1b8be8b01b168 /src/inputmanager.h | |
parent | b310c51796d1632aeefc834dc0e931c52f909a41 (diff) | |
download | mv-8a999b66fd697404c6640778a6dd1ce0e747334a.tar.gz mv-8a999b66fd697404c6640778a6dd1ce0e747334a.tar.bz2 mv-8a999b66fd697404c6640778a6dd1ce0e747334a.tar.xz mv-8a999b66fd697404c6640778a6dd1ce0e747334a.zip |
move input related files into input dir.
Diffstat (limited to 'src/inputmanager.h')
-rw-r--r-- | src/inputmanager.h | 191 |
1 files changed, 0 insertions, 191 deletions
diff --git a/src/inputmanager.h b/src/inputmanager.h deleted file mode 100644 index d8b39f6b8..000000000 --- a/src/inputmanager.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2012-2013 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef INPUTMANAGER_H -#define INPUTMANAGER_H - -#include "inputevent.h" -#include "keydata.h" - -#include <string> -#include <map> - -#include <SDL.h> - -const unsigned int KeyFunctionSize = 3; - -// hack to avoid conflicts with windows headers. -#ifdef INPUT_KEYBOARD -#undef INPUT_KEYBOARD -#endif -#ifdef INPUT_MOUSE -#undef INPUT_MOUSE -#endif - -struct KeyData; - -class Setup_Input; - -enum KeyTypes -{ - INPUT_UNKNOWN = 0, - INPUT_KEYBOARD = 1, - INPUT_MOUSE = 2, - INPUT_JOYSTICK = 3 -}; - -struct KeyItem final -{ - KeyItem() : - type(-1), value(-1) - { } - - KeyItem(const int type0, const int value0) : - type(type0), value(value0) - { } - - int type; - - int value; -}; - -struct KeyFunction final -{ - KeyItem values[KeyFunctionSize]; -}; - -enum KeyCondition -{ - COND_DEFAULT = 1, // default condition - COND_ENABLED = 2, // keyboard must be enabled - COND_NOINPUT = 4, // input items must be unfocused - COND_NOAWAY = 8, // player not in away mode - COND_NOSETUP = 16, // setup window is hidde - COND_VALIDSPEED = 32, // valid speed - COND_NOMODAL = 64, // modal windows inactive - COND_NONPCINPUT = 128, // npc input field inactive - COND_EMODS = 256, // game modifiers enabled - COND_NOTARGET = 512, // no target/untarget keys - // pressed - COND_NOFOLLOW = 1024, // follow mode disabled - COND_INGAME = 2048, // game must be started - COND_SHORTCUT = 2 + 4 + 16 + 512 + 2048, // flags for shortcut keys - COND_SHORTCUT0 = 2 + 4 + 16 + 512, // flags for shortcut keys - COND_GAME = 2 + 4 + 8 + 16 + 64 + 2048, // main game key - COND_GAME2 = 2 + 8 + 16 + 64 + 2048 -}; - -class InputManager final -{ - public: - InputManager(); - - A_DELETE_COPY(InputManager) - - void init(); - - bool handleEvent(const SDL_Event &event); - - bool checkKey(const KeyData *const key) const A_WARN_UNUSED; - - void retrieve(); - - void store() const; - - void resetKeys(); - - void makeDefault(const int i); - - bool hasConflicts(int &key1, int &key2) const A_WARN_UNUSED; - - void callbackNewKey(); - - KeyFunction &getKey(int index) A_WARN_UNUSED; - - std::string getKeyValueString(const int index) const A_WARN_UNUSED; - - std::string getKeyStringLong(const int index) const A_WARN_UNUSED; - - std::string getKeyValueByName(const std::string &keyName); - - void addActionKey(const int action, const int type, const int val); - - void setNewKey(const SDL_Event &event, const int type); - - void unassignKey(); - - static bool isActionActive(const int index) A_WARN_UNUSED; - - /** - * Set the index of the new key to be assigned. - */ - void setNewKeyIndex(const int value) - { mNewKeyIndex = value; } - - /** - * Set a reference to the key setup window. - */ - void setSetupInput(Setup_Input *const setupInput) - { mSetupInput = setupInput; } - - /** - * Get the index of the new key to be assigned. - */ - int getNewKeyIndex() const A_WARN_UNUSED - { return mNewKeyIndex; } - - void updateKeyActionMap(KeyToActionMap &actionMap, - KeyToIdMap &idMap, KeyTimeMap &keyTimeMap, - const int type) const; - - bool invokeKey(const KeyData *const key, const int keyNum); - - bool handleAssignKey(const SDL_Event &event, const int type); - - void handleRepeat() const; - - bool triggerAction(const KeysVector *const ptrs); - - int getKeyIndex(const int value, const int grp, - const int type) const A_WARN_UNUSED; - - void update() const; - - void updateConditionMask(); - - int getActionByKey(const SDL_Event &event) const A_WARN_UNUSED; - - void executeAction(const int keyNum); - - protected: - Setup_Input *mSetupInput; /**< Reference to setup window */ - - int mNewKeyIndex; /**< Index of new key to be assigned */ - - int mMask; - - std::map<std::string, int> mNameMap; - - KeyFunction mKey[Input::KEY_TOTAL]; /**< Pointer to all the key data */ -}; - -extern InputManager inputManager; - -#endif // INPUTMANAGER_H |