summaryrefslogtreecommitdiff
path: root/src/actions/chat.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-12-11 02:10:20 +0300
committerAndrei Karas <akaras@inbox.ru>2014-12-11 02:10:20 +0300
commitf351cda87ca7dcfad1772e78ebdecd184a06e385 (patch)
tree340b6caec0106cb480afb7f7fb97ee78ab6516ae /src/actions/chat.cpp
parent48d66daa641c58d68a4150b1f6bf958dfb8ecb13 (diff)
downloadmanaplus-f351cda87ca7dcfad1772e78ebdecd184a06e385.tar.gz
manaplus-f351cda87ca7dcfad1772e78ebdecd184a06e385.tar.bz2
manaplus-f351cda87ca7dcfad1772e78ebdecd184a06e385.tar.xz
manaplus-f351cda87ca7dcfad1772e78ebdecd184a06e385.zip
Add chat command for silent sendong whisper message.
New chat command: /w2 name message Aliases: /whisper2 /msg2
Diffstat (limited to 'src/actions/chat.cpp')
-rw-r--r--src/actions/chat.cpp53
1 files changed, 37 insertions, 16 deletions
diff --git a/src/actions/chat.cpp b/src/actions/chat.cpp
index ac834c6f5..142f9000e 100644
--- a/src/actions/chat.cpp
+++ b/src/actions/chat.cpp
@@ -178,33 +178,32 @@ impHandler0(scrollChatDown)
return false;
}
-impHandler(msg)
+static bool splitWhisper(const std::string &args,
+ std::string &recvnick,
+ std::string &message)
{
- std::string recvnick;
- std::string message;
-
- if (event.args.substr(0, 1) == "\"")
+ if (args.substr(0, 1) == "\"")
{
- const size_t pos = event.args.find('"', 1);
+ const size_t pos = args.find('"', 1);
if (pos != std::string::npos)
{
- recvnick = event.args.substr(1, pos - 1);
- if (pos + 2 < event.args.length())
- message = event.args.substr(pos + 2, event.args.length());
+ recvnick = args.substr(1, pos - 1);
+ if (pos + 2 < args.length())
+ message = args.substr(pos + 2, args.length());
}
}
else
{
- const size_t pos = event.args.find(" ");
+ const size_t pos = args.find(" ");
if (pos != std::string::npos)
{
- recvnick = event.args.substr(0, pos);
- if (pos + 1 < event.args.length())
- message = event.args.substr(pos + 1, event.args.length());
+ recvnick = args.substr(0, pos);
+ if (pos + 1 < args.length())
+ message = args.substr(pos + 1, args.length());
}
else
{
- recvnick = std::string(event.args);
+ recvnick = std::string(args);
message.clear();
}
}
@@ -219,9 +218,21 @@ impHandler(msg)
toLower(playerName);
toLower(tempNick);
- if (tempNick.compare(playerName) == 0 || event.args.empty())
- return true;
+ if (tempNick.compare(playerName) == 0 || args.empty())
+ return false;
+
+ return true;
+ }
+ return false;
+}
+impHandler(msg)
+{
+ std::string recvnick;
+ std::string message;
+
+ if (splitWhisper(event.args, recvnick, message))
+ {
chatWindow->addWhisper(recvnick, message, ChatMsgType::BY_PLAYER);
}
else
@@ -233,6 +244,16 @@ impHandler(msg)
return true;
}
+impHandler(msg2)
+{
+ std::string recvnick;
+ std::string message;
+
+ if (splitWhisper(event.args, recvnick, message))
+ chatHandler->privateMessage(recvnick, message);
+ return true;
+}
+
impHandler(query)
{
const std::string &args = event.args;