diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-08-23 21:48:59 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-08-23 21:48:59 +0300 |
commit | 475aa157df7400ce40ef9a5cc4cb441291d45df9 (patch) | |
tree | 6990e349c853115820caaf1f34e96c35a5186c8d /src/actions/chat.cpp | |
parent | 2efe6bad2044f12d842466e149f512aba9b7fc86 (diff) | |
download | manaplus-475aa157df7400ce40ef9a5cc4cb441291d45df9.tar.gz manaplus-475aa157df7400ce40ef9a5cc4cb441291d45df9.tar.bz2 manaplus-475aa157df7400ce40ef9a5cc4cb441291d45df9.tar.xz manaplus-475aa157df7400ce40ef9a5cc4cb441291d45df9.zip |
Move chat command /whisper into actions.
Diffstat (limited to 'src/actions/chat.cpp')
-rw-r--r-- | src/actions/chat.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/actions/chat.cpp b/src/actions/chat.cpp index d69895af3..08b3e0014 100644 --- a/src/actions/chat.cpp +++ b/src/actions/chat.cpp @@ -68,6 +68,9 @@ #include "gui/widgets/tabs/chattab.h" +#include "utils/gettext.h" +#include "utils/stringutils.h" + #include "debug.h" extern ShortcutWindow *spellShortcutWindow; @@ -154,4 +157,58 @@ impHandler0(scrollChatDown) return false; } +impHandler(msg) +{ + std::string recvnick; + std::string msg; + + if (event.args.substr(0, 1) == "\"") + { + const size_t pos = event.args.find('"', 1); + if (pos != std::string::npos) + { + recvnick = event.args.substr(1, pos - 1); + if (pos + 2 < event.args.length()) + msg = event.args.substr(pos + 2, event.args.length()); + } + } + else + { + const size_t pos = event.args.find(" "); + if (pos != std::string::npos) + { + recvnick = event.args.substr(0, pos); + if (pos + 1 < event.args.length()) + msg = event.args.substr(pos + 1, event.args.length()); + } + else + { + recvnick = std::string(event.args); + msg.clear(); + } + } + + trim(msg); + + if (msg.length() > 0) + { + std::string playerName = localPlayer->getName(); + std::string tempNick = recvnick; + + toLower(playerName); + toLower(tempNick); + + if (tempNick.compare(playerName) == 0 || event.args.empty()) + return true; + + chatWindow->addWhisper(recvnick, msg, ChatMsgType::BY_PLAYER); + } + else + { + // TRANSLATORS: whisper send + event.tab->chatLog(_("Cannot send empty whispers!"), ChatMsgType::BY_SERVER); + } + return true; +} + } // namespace Actions |