Files
wow-Heimdall/Modules/NetworkMessenger.lua

65 lines
2.2 KiB
Lua

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