summaryrefslogtreecommitdiff
path: root/src/core/chatManager.cpp
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2025-06-12 21:41:41 +0800
committerlittleblack111 <littleblack11111@gmail.com>2025-06-13 20:22:51 +0800
commit6f7b994684032060f0a2d7af82f4f3572293b8d6 (patch)
tree793d328cbcd6761365267550b55db45aee9b21fc /src/core/chatManager.cpp
parent6a51ab4525c59e9fe2bdbd92493019b0a98c6b94 (diff)
internal!: organized internal structure, using cmake now
Diffstat (limited to 'src/core/chatManager.cpp')
-rw-r--r--src/core/chatManager.cpp36
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;
+}