local addonname, shared = ... ---@cast shared HeimdallShared ---@cast addonname string 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