summaryrefslogtreecommitdiff
path: root/src/actions/chat.cpp
diff options
context:
space:
mode:
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;