summaryrefslogtreecommitdiff
path: root/src/actions
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-08-23 21:48:59 +0300
committerAndrei Karas <akaras@inbox.ru>2014-08-23 21:48:59 +0300
commit475aa157df7400ce40ef9a5cc4cb441291d45df9 (patch)
tree6990e349c853115820caaf1f34e96c35a5186c8d /src/actions
parent2efe6bad2044f12d842466e149f512aba9b7fc86 (diff)
downloadmanaplus-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')
-rw-r--r--src/actions/chat.cpp57
-rw-r--r--src/actions/chat.h1
2 files changed, 58 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
diff --git a/src/actions/chat.h b/src/actions/chat.h
index 8d0003e73..b653e6efb 100644
--- a/src/actions/chat.h
+++ b/src/actions/chat.h
@@ -35,6 +35,7 @@ namespace Actions
decHandler(ignoreAllWhispers);
decHandler(scrollChatUp);
decHandler(scrollChatDown);
+ decHandler(msg);
} // namespace Actions
#undef decHandler