diff --git a/Modules/Network.lua b/Modules/Network.lua index 55a84c6..d3f533c 100644 --- a/Modules/Network.lua +++ b/Modules/Network.lua @@ -31,6 +31,7 @@ function shared.Network.Init() end shared.networkNodes = {} + if false then shared.networkNodes[#shared.networkNodes+1] = UnitName("player") end for _, player in ipairs(Heimdall_Data.config.network.members) do if friends[player] then shared.networkNodes[#shared.networkNodes + 1] = player diff --git a/Modules/NetworkMessenger.lua b/Modules/NetworkMessenger.lua index 8ae8a78..1463019 100644 --- a/Modules/NetworkMessenger.lua +++ b/Modules/NetworkMessenger.lua @@ -67,7 +67,7 @@ function shared.NetworkMessenger.Init() message.channel, message.data)) end - local payload = string.format("%s|%s|%s", message.message, message.channel, message.data) + local payload = string.format("dmessage|%s|%s|%s", message.message, message.channel, message.data) if Heimdall_Data.config.networkMessenger.debug then print(string.format("[%s] Payload: %s", ModuleName, payload)) end @@ -91,29 +91,10 @@ function shared.NetworkMessenger.Init() Tick() end - local testMessage = { - channel = "WHISPER", - message = "Hi, mom!", - data = "Secundus" - } - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) - table.insert(shared.networkMessenger.queue, testMessage) + -- If we are the leader then we delegate messages (dmessage) + -- If we get a "message" command from leader then we send the message + local nextIdx = 1 local addonMsgFrame = CreateFrame("Frame") addonMsgFrame:RegisterEvent("CHAT_MSG_ADDON") addonMsgFrame:SetScript("OnEvent", function(self, event, prefix, message, channel, source) @@ -163,6 +144,22 @@ function shared.NetworkMessenger.Init() data = target } table.insert(shared.messenger.queue, msg) + elseif command == "dmessage" then + if Heimdall_Data.config.networkMessenger.debug then + print(string.format("[%s] Received dmessage command", ModuleName)) + end + parts[1] = "message" + local message = table.concat(parts, "|") + + if nextIdx > #shared.networkNodes then + nextIdx = 1 + end + local recipient = shared.networkNodes[nextIdx] + nextIdx = nextIdx + 1 + if Heimdall_Data.config.networkMessenger.debug then + print(string.format("[%s] Sending message %s to %s", ModuleName, message, recipient)) + end + SendAddonMessage(Heimdall_Data.config.addonPrefix, message, "WHISPER", recipient) end end)