summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/actions/chat.cpp53
-rw-r--r--src/actions/chat.h1
-rw-r--r--src/input/inputaction.h1
-rw-r--r--src/input/inputactionmap.h9
4 files changed, 48 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;
diff --git a/src/actions/chat.h b/src/actions/chat.h
index 5bf689ac9..321357553 100644
--- a/src/actions/chat.h
+++ b/src/actions/chat.h
@@ -36,6 +36,7 @@ namespace Actions
decHandler(scrollChatUp);
decHandler(scrollChatDown);
decHandler(msg);
+ decHandler(msg2);
decHandler(query);
decHandler(clearChatTab);
decHandler(createParty);
diff --git a/src/input/inputaction.h b/src/input/inputaction.h
index 7e8a15ab1..b3b95a8f7 100644
--- a/src/input/inputaction.h
+++ b/src/input/inputaction.h
@@ -492,6 +492,7 @@ namespace InputAction
CONTEXT_MENU,
BUY,
SELL,
+ WHISPER2,
TOTAL
};
} // namespace InputAction
diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h
index f4579881c..8e14f911c 100644
--- a/src/input/inputactionmap.h
+++ b/src/input/inputactionmap.h
@@ -4171,6 +4171,15 @@ static const InputActionData inputActionData[InputAction::TOTAL] = {
InputCondition::GAME,
"sell",
false},
+ {"keyWhisper2",
+ InputType::UNKNOWN, InputAction::NO_VALUE,
+ InputType::UNKNOWN, InputAction::NO_VALUE,
+ Input::GRP_DEFAULT,
+ &Actions::msg2,
+ InputAction::NO_VALUE, 50,
+ InputCondition::INGAME,
+ "w2|whisper2|msg2",
+ true},
};
#endif // INPUT_INPUTACTIONMAP_H