diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-06-12 21:41:41 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-06-13 20:22:51 +0800 |
| commit | 6f7b994684032060f0a2d7af82f4f3572293b8d6 (patch) | |
| tree | 793d328cbcd6761365267550b55db45aee9b21fc /src/core/chatManager.cpp | |
| parent | 6a51ab4525c59e9fe2bdbd92493019b0a98c6b94 (diff) | |
internal!: organized internal structure, using cmake now
Diffstat (limited to 'src/core/chatManager.cpp')
| -rw-r--r-- | src/core/chatManager.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/core/chatManager.cpp b/src/core/chatManager.cpp new file mode 100644 index 0000000..e981e7f --- /dev/null +++ b/src/core/chatManager.cpp @@ -0,0 +1,36 @@ +#include "chatManager.hpp" +#include "../io/IOManager.hpp" +#include "../io/inputManager.hpp" +#include "../debug/log.hpp" +#include "sessionManager.hpp" + +CChatManager::CChatManager() { + log(LOG, "ChatManager: initialized"); +} + +CChatManager::~CChatManager() { + log(SYS, "ChatManager: bye"); +} + +void CChatManager::newMessage(const SMessage &msg) { + log(LOG, "{}: {}", msg.username, msg.msg); + const auto session = msg.sender ? msg.sender->lock() : g_pSessionManager->getByName(msg.username); + if (session && session->isMuted()) { + session->write("You are muted"); + return; + } + g_pSessionManager->broadcast(msg); +} + +std::string CChatManager::fmtBroadcastMessage(const SMessage &msg) { + return NFormatter::fmt(NONE, "{}: {}", msg.username, msg.msg); +} + +std::vector<CChatManager::SMessage> CChatManager::getChat() const { + std::vector<SMessage> chat; + + for (const auto &[msg, _, _] : g_pIOManager->getIO()) + if (msg) + chat.push_back(*msg); + return chat; +} |
