diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-10-16 20:04:47 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-10-16 20:04:47 +0300 |
commit | f4761d658102198abcce6b020c2c0f0e756d534a (patch) | |
tree | c0f3df556e4eb6074900c056a70684aba2d94829 /src/input/inputmanager.cpp | |
parent | eeaf54bbaa50ba969fa982498bf39d40dca9a67a (diff) | |
download | manaplus-f4761d658102198abcce6b020c2c0f0e756d534a.tar.gz manaplus-f4761d658102198abcce6b020c2c0f0e756d534a.tar.bz2 manaplus-f4761d658102198abcce6b020c2c0f0e756d534a.tar.xz manaplus-f4761d658102198abcce6b020c2c0f0e756d534a.zip |
Add protection attribute to input actions. Unsafe actions blocked from remote usage.
Diffstat (limited to 'src/input/inputmanager.cpp')
-rw-r--r-- | src/input/inputmanager.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/input/inputmanager.cpp b/src/input/inputmanager.cpp index a9d35fb64..27d15a366 100644 --- a/src/input/inputmanager.cpp +++ b/src/input/inputmanager.cpp @@ -811,6 +811,27 @@ bool InputManager::executeChatCommand(const std::string &cmd, return false; } +bool InputManager::executeRemoteChatCommand(const std::string &cmd, + const std::string &args, + ChatTab *const tab) +{ + const StringIntMapCIter it = mChatMap.find(cmd); + if (it != mChatMap.end()) + { + const InputActionData &data = inputActionData[(*it).second]; + if (data.isProtected == Protected_true) + return false; + ActionFuncPtr func = *(data.action); + if (func) + { + InputEvent evt(args, tab, mMask); + func(evt); + return true; + } + } + return false; +} + bool InputManager::executeChatCommand(const InputActionT keyNum, const std::string &args, ChatTab *const tab) |