diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-04-17 06:26:26 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-04-17 06:26:26 +1000 |
commit | 6b548c17e20c5d6c5cc154d300a7a4c4ed42984c (patch) | |
tree | 40e57a6904f0f66331ed77db0338581461e2a8ea /source/game | |
parent | c59fceecf93895c7bd2b2bf9fe327dd79e9d0c51 (diff) |
actually pass along chat user data
Diffstat (limited to 'source/game')
-rw-r--r-- | source/game/StarChatProcessor.cpp | 18 | ||||
-rw-r--r-- | source/game/StarChatProcessor.hpp | 6 | ||||
-rw-r--r-- | source/game/StarUniverseServer.cpp | 17 | ||||
-rw-r--r-- | source/game/StarUniverseServer.hpp | 2 |
4 files changed, 28 insertions, 15 deletions
diff --git a/source/game/StarChatProcessor.cpp b/source/game/StarChatProcessor.cpp index 2082529..0dd0c48 100644 --- a/source/game/StarChatProcessor.cpp +++ b/source/game/StarChatProcessor.cpp @@ -122,7 +122,7 @@ StringList ChatProcessor::activeChannels() const { return channels; } -void ChatProcessor::broadcast(ConnectionId sourceConnectionId, String const& text) { +void ChatProcessor::broadcast(ConnectionId sourceConnectionId, String const& text, JsonObject data) { RecursiveMutexLocker locker(m_mutex); ChatReceivedMessage message = { @@ -132,6 +132,8 @@ void ChatProcessor::broadcast(ConnectionId sourceConnectionId, String const& tex text }; + message.data = std::move(data); + if (handleCommand(message)) return; @@ -139,7 +141,7 @@ void ChatProcessor::broadcast(ConnectionId sourceConnectionId, String const& tex pair.second.pendingMessages.append(message); } -void ChatProcessor::message(ConnectionId sourceConnectionId, MessageContext::Mode mode, String const& channelName, String const& text) { +void ChatProcessor::message(ConnectionId sourceConnectionId, MessageContext::Mode mode, String const& channelName, String const& text, JsonObject data) { RecursiveMutexLocker locker(m_mutex); ChatReceivedMessage message = { @@ -149,6 +151,8 @@ void ChatProcessor::message(ConnectionId sourceConnectionId, MessageContext::Mod text }; + message.data = std::move(data); + if (handleCommand(message)) return; @@ -158,11 +162,17 @@ void ChatProcessor::message(ConnectionId sourceConnectionId, MessageContext::Mod } } -void ChatProcessor::whisper(ConnectionId sourceConnectionId, ConnectionId targetClientId, String const& text) { +void ChatProcessor::whisper(ConnectionId sourceConnectionId, ConnectionId targetClientId, String const& text, JsonObject data) { RecursiveMutexLocker locker(m_mutex); ChatReceivedMessage message = { - {MessageContext::Whisper}, sourceConnectionId, connectionNick(sourceConnectionId), text}; + {MessageContext::Whisper}, + sourceConnectionId, + connectionNick(sourceConnectionId), + text + }; + + message.data = std::move(data); if (handleCommand(message)) return; diff --git a/source/game/StarChatProcessor.hpp b/source/game/StarChatProcessor.hpp index 89bb5f5..1c42b75 100644 --- a/source/game/StarChatProcessor.hpp +++ b/source/game/StarChatProcessor.hpp @@ -41,9 +41,9 @@ public: StringList clientChannels(ConnectionId clientId) const; StringList activeChannels() const; - void broadcast(ConnectionId sourceConnectionId, String const& text); - void message(ConnectionId sourceConnectionId, MessageContext::Mode context, String const& channelName, String const& text); - void whisper(ConnectionId sourceConnectionId, ConnectionId targetClientId, String const& text); + void broadcast(ConnectionId sourceConnectionId, String const& text, JsonObject data = {}); + void message(ConnectionId sourceConnectionId, MessageContext::Mode context, String const& channelName, String const& text, JsonObject data = {}); + void whisper(ConnectionId sourceConnectionId, ConnectionId targetClientId, String const& text, JsonObject data = {}); // Shorthand for passing ServerConnectionId as sourceConnectionId to // broadcast / message / whisper diff --git a/source/game/StarUniverseServer.cpp b/source/game/StarUniverseServer.cpp index f32f650..977dc71 100644 --- a/source/game/StarUniverseServer.cpp +++ b/source/game/StarUniverseServer.cpp @@ -1064,16 +1064,19 @@ void UniverseServer::processChat() { for (auto const& p : take(m_pendingChat)) { if (auto clientContext = m_clients.get(p.first)) { for (auto const& chat : p.second) { + auto& message = get<0>(chat); + auto sendMode = get<1>(chat); + auto& data = get<2>(chat); if (clientContext->remoteAddress()) - Logger::info("Chat: <{}> {}", clientContext->playerName(), chat.first); + Logger::info("Chat: <{}> {}", clientContext->playerName(), message); auto team = m_teamManager->getTeam(clientContext->playerUuid()); - if (chat.second == ChatSendMode::Broadcast) - m_chatProcessor->broadcast(p.first, chat.first); - else if (chat.second == ChatSendMode::Party && team.isValid()) - m_chatProcessor->message(p.first, MessageContext::Mode::Party, team.value().hex(), chat.first); + if (sendMode == ChatSendMode::Broadcast) + m_chatProcessor->broadcast(p.first, message, std::move(data)); + else if (sendMode == ChatSendMode::Party && team.isValid()) + m_chatProcessor->message(p.first, MessageContext::Mode::Party, team.value().hex(), message, std::move(data)); else - m_chatProcessor->message(p.first, MessageContext::Mode::Local, printWorldId(clientContext->playerWorldId()), chat.first); + m_chatProcessor->message(p.first, MessageContext::Mode::Local, printWorldId(clientContext->playerWorldId()), message, std::move(data)); } } } @@ -1527,7 +1530,7 @@ void UniverseServer::packetsReceived(UniverseConnectionServer*, ConnectionId cli } else if (auto chatSend = as<ChatSendPacket>(packet)) { RecursiveMutexLocker locker(m_mainLock); - m_pendingChat[clientId].append({std::move(chatSend->text), chatSend->sendMode}); + m_pendingChat[clientId].append(make_tuple(std::move(chatSend->text), chatSend->sendMode, std::move(chatSend->data))); } else if (auto clientContextUpdatePacket = as<ClientContextUpdatePacket>(packet)) { clientContext->readUpdate(std::move(clientContextUpdatePacket->updateData)); diff --git a/source/game/StarUniverseServer.hpp b/source/game/StarUniverseServer.hpp index f3db6fc..ddf7d0c 100644 --- a/source/game/StarUniverseServer.hpp +++ b/source/game/StarUniverseServer.hpp @@ -254,7 +254,7 @@ private: HashMap<ConnectionId, String> m_pendingDisconnections; HashMap<ConnectionId, List<WorkerPoolPromise<CelestialResponse>>> m_pendingCelestialRequests; List<pair<WorldId, UniverseFlagAction>> m_pendingFlagActions; - HashMap<ConnectionId, List<pair<String, ChatSendMode>>> m_pendingChat; + HashMap<ConnectionId, List<tuple<String, ChatSendMode, JsonObject>>> m_pendingChat; Maybe<WorkerPoolPromise<CelestialCoordinate>> m_nextRandomizedStarterWorld; Map<WorldId, List<WorldServerThread::Message>> m_pendingWorldMessages; |