diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-08-23 13:09:30 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-08-23 13:09:30 +0300 |
commit | 07012a81f523b7f6bd095325ddd2675a3ce06d09 (patch) | |
tree | 839921e0f2b3143ef0f5dcdf4cfc6969e1e32154 /src/input/inputmanager.cpp | |
parent | 028638516b8a19edfe512309708012003e68b5c5 (diff) | |
download | plus-07012a81f523b7f6bd095325ddd2675a3ce06d09.tar.gz plus-07012a81f523b7f6bd095325ddd2675a3ce06d09.tar.bz2 plus-07012a81f523b7f6bd095325ddd2675a3ce06d09.tar.xz plus-07012a81f523b7f6bd095325ddd2675a3ce06d09.zip |
If chat command not found, try find it in input actions.
Diffstat (limited to 'src/input/inputmanager.cpp')
-rw-r--r-- | src/input/inputmanager.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/input/inputmanager.cpp b/src/input/inputmanager.cpp index 2cbd100e2..c74544432 100644 --- a/src/input/inputmanager.cpp +++ b/src/input/inputmanager.cpp @@ -157,8 +157,9 @@ void InputManager::retrieve() } } } - if (!inputActionData[i].chatCommand.empty()) - mChatMap[i] = i; + const std::string &cmd = inputActionData[i].chatCommand; + if (!cmd.empty()) + mChatMap[cmd] = i; } } @@ -728,6 +729,24 @@ void InputManager::executeAction(const int keyNum) func(evt); } +bool InputManager::executeChatCommand(const std::string &cmd, + const std::string &args, + ChatTab *const tab) +{ + const std::map<std::string, int>::const_iterator it = mChatMap.find(cmd); + if (it != mChatMap.end()) + { + ActionFuncPtr func = *(inputActionData[(*it).second].action); + if (func) + { + InputEvent evt(args, tab); + func(evt); + return true; + } + } + return false; +} + void InputManager::updateKeyActionMap(KeyToActionMap &actionMap, KeyToIdMap &idMap, KeyTimeMap &keyTimeMap, |