Files
wow-Heimdall/Modules/Network.lua

68 lines
2.1 KiB
Lua

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<string, boolean>
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[#shared.networkNodes + 1] = player
if Heimdall_Data.config.network.debug then
print(string.format("[%s] Adding network node %s", ModuleName, player))
end
end
end
shared.networkNodes[#shared.networkNodes+1] = UnitName("player")
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