Multicast chat messages

Only the sender and the recipients receive the chat messages.
This commit only has an affecto on messages where the addressee(s) are
selected through the dropdown. Addressee(s) selected with a "/" command
are still sent to evevyone and filteret by the receiver.
This commit is contained in:
phosit
2024-11-30 11:18:24 +01:00
committed by phosit
parent 023527e56e
commit e04506814a
11 changed files with 207 additions and 53 deletions
+9 -2
View File
@@ -465,10 +465,17 @@ void CNetClient::SendAssignPlayerMessage(const int playerID, const CStr& guid)
SendMessage(&assignPlayer);
}
void CNetClient::SendChatMessage(const std::wstring& text)
void CNetClient::SendChatMessage(const std::wstring& text,
std::optional<std::vector<std::string>> receivers)
{
CChatMessage chat;
chat.m_Message = text;
if (receivers)
std::transform(receivers->begin(), receivers->end(), std::back_inserter(chat.m_Receivers),
[](std::string& receiver)
{
return CChatMessage::S_m_Receivers{std::move(receiver)};
});
SendMessage(&chat);
}
@@ -732,7 +739,7 @@ bool CNetClient::OnChat(CNetClient* client, CFsmEvent* event)
client->PushGuiMessage(
"type", "chat",
"guid", message->m_GUID,
"guid", message->m_SenderGUID,
"text", message->m_Message);
return true;