diff --git a/Modules/Network.lua b/Modules/Network.lua index 453791a..0ff5ab9 100644 --- a/Modules/Network.lua +++ b/Modules/Network.lua @@ -6,10 +6,61 @@ local ModuleName = "Network" ---@diagnostic disable-next-line: missing-fields shared.Network = {} function shared.Network.Init() + local updateTime = 0 + + local friendsFrame = CreateFrame("Frame") + friendsFrame:RegisterEvent("FRIENDLIST_UPDATE") + friendsFrame:SetScript("OnEvent", function(self, event, ...) + ---@type table + local friends = {} + for i = 1, GetNumFriends() do + local name, level, class, area, connected, status, note, RAF = GetFriendInfo(i) + friends[name] = connected + if Heimdall_Data.config.network.debug then + print(string.format("[%s] Friend %s is %s", ModuleName, name, connected and "online" or "offline")) + end + end + + for _, member in ipairs(Heimdall_Data.config.network.members) do + if friends[member] == nil then + if Heimdall_Data.config.network.debug then + print(string.format("[%s] Adding friend %s", ModuleName, member)) + end + AddFriend(member) + end + end + + shared.networkNodes = {} + for _, player in ipairs(Heimdall_Data.config.network.members) do + if friends[player] then + shared.networkNodes[player] = true + if Heimdall_Data.config.network.debug then + print(string.format("[%s] Adding network node %s", ModuleName, player)) + end + end + end + if Heimdall_Data.config.network.debug then + print(string.format("[%s] Network nodes:", ModuleName)) + shared.dumpTable(shared.networkNodes) + end + end) + + local function Update() + if not Heimdall_Data.config.network.enabled then return end + if Heimdall_Data.config.network.debug then + print("Network module is updating.") + end + ShowFriends() + end + local networkFrame = CreateFrame("Frame") networkFrame:SetScript("OnUpdate", function(self, elapsed) if not Heimdall_Data.config.network.enabled then return end - + updateTime = updateTime + elapsed + if updateTime >= Heimdall_Data.config.network.updateInterval then + Update() + updateTime = 0 + end end) print("[Heimdall] Network module loaded") end