local addonname, shared = ... ---@cast shared HeimdallShared ---@cast addonname string local ModuleName = "NetworkMessenger" ---@diagnostic disable-next-line: missing-fields shared.NetworkMessenger = {} function shared.NetworkMessenger.Init() RegisterAddonMessagePrefix(Heimdall_Data.config.addonPrefix) local addonMsgFrame = CreateFrame("Frame") addonMsgFrame:RegisterEvent("CHAT_MSG_ADDON") addonMsgFrame:SetScript("OnEvent", function(self, event, prefix, message, channel, source) if not Heimdall_Data.config.networkMessenger.enabled then return end if prefix ~= Heimdall_Data.config.addonPrefix then return end source = string.match(source, "[^%-]+") if Heimdall_Data.config.networkMessenger.debug then print(string.format("[%s] Received message from %s: %s", ModuleName, source, message)) end if #shared.networkNodes == 0 then if Heimdall_Data.config.networkMessenger.debug then print(string.format("[%s] No network nodes found, wtf????", ModuleName)) end return end -- There should always be at least one network node ergo should always exist a leader -- Because the us, the player, is also a node local networkLeader = shared.networkNodes[1] if source ~= networkLeader then if Heimdall_Data.config.networkMessenger.debug then print(string.format("[%s] Message from %s is not from the network leader (%s)", ModuleName, source, networkLeader)) end return end --/run SendAddonMessage("HEIMDALL", "message|hello|WHISPER|PrĂ­mus", "WHISPER", UnitName("player")) local parts = shared.Split(message, "|") if Heimdall_Data.config.networkMessenger.debug then print(string.format("[%s] Received message parts:", ModuleName)) shared.dumpTable(parts) end local command = strtrim(parts[1]) if command == "message" then local message = strtrim(parts[2]) local channel = strtrim(parts[3]) local target = strtrim(parts[4]) if Heimdall_Data.config.networkMessenger.debug then print(string.format("[%s] Received message command: %s %s %s", ModuleName, message, channel, target)) end ---@type Message local msg = { channel = channel, message = message, data = target } table.insert(shared.messenger.queue, msg) end end) print("[Heimdall] NetworkMessenger module loaded") end