Refactor Heimdall module fields for improved organization and clarity
This commit is contained in:
@@ -2,72 +2,77 @@ local _, shared = ...
|
||||
---@cast shared HeimdallShared
|
||||
local ModuleName = "Network"
|
||||
|
||||
---@diagnostic disable-next-line: missing-fields
|
||||
shared.Network = {}
|
||||
function shared.Network.Init()
|
||||
if not shared.network then shared.network = {} end
|
||||
local updatePending = false
|
||||
---@class HeimdallNetworkData
|
||||
---@field ticker Timer?
|
||||
|
||||
local function FriendListUpdate()
|
||||
updatePending = false
|
||||
if not Heimdall_Data.config.network.enabled then return end
|
||||
---@type table<string, boolean>
|
||||
local friends = {}
|
||||
for i = 1, GetNumFriends() do
|
||||
local name, _, _, _, connected, _, _, _ = GetFriendInfo(i)
|
||||
if name then
|
||||
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"))
|
||||
shared.Network = {
|
||||
Init = function()
|
||||
if not shared.network then shared.network = {} end
|
||||
local updatePending = false
|
||||
|
||||
local function FriendListUpdate()
|
||||
updatePending = false
|
||||
if not Heimdall_Data.config.network.enabled then return end
|
||||
---@type table<string, boolean>
|
||||
local friends = {}
|
||||
for i = 1, GetNumFriends() do
|
||||
local name, _, _, _, connected, _, _, _ = GetFriendInfo(i)
|
||||
if name then
|
||||
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
|
||||
else
|
||||
if Heimdall_Data.config.network.debug then
|
||||
print(string.format("[%s] Friend %s is nil", ModuleName, i))
|
||||
end
|
||||
end
|
||||
else
|
||||
if Heimdall_Data.config.network.debug then
|
||||
print(string.format("[%s] Friend %s is nil", ModuleName, i))
|
||||
end
|
||||
|
||||
for _, member in ipairs(Heimdall_Data.config.network.members) do
|
||||
if friends[member] == nil and member ~= UnitName("player") then
|
||||
if Heimdall_Data.config.network.debug then
|
||||
print(string.format("[%s] Adding friend %s", ModuleName, member))
|
||||
end
|
||||
AddFriend(member)
|
||||
end
|
||||
end
|
||||
friends[UnitName("player")] = true
|
||||
|
||||
shared.networkNodes = {}
|
||||
-- Why are we skipping this again...?
|
||||
-- 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
|
||||
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
|
||||
|
||||
for _, member in ipairs(Heimdall_Data.config.network.members) do
|
||||
if friends[member] == nil and member ~= UnitName("player") then
|
||||
if Heimdall_Data.config.network.debug then
|
||||
print(string.format("[%s] Adding friend %s", ModuleName, member))
|
||||
end
|
||||
AddFriend(member)
|
||||
end
|
||||
local friendsFrame = CreateFrame("Frame")
|
||||
friendsFrame:RegisterEvent("FRIENDLIST_UPDATE")
|
||||
friendsFrame:SetScript("OnEvent", function(self, event, ...) end)
|
||||
|
||||
local function NetworkTick()
|
||||
if Heimdall_Data.config.network.debug then print("Network module is updating.") end
|
||||
ShowFriends()
|
||||
updatePending = true
|
||||
C_Timer.After(1, function()
|
||||
if updatePending then FriendListUpdate() end
|
||||
end)
|
||||
shared.network.ticker = C_Timer.NewTimer(Heimdall_Data.config.network.updateInterval, NetworkTick, 1)
|
||||
end
|
||||
friends[UnitName("player")] = true
|
||||
|
||||
shared.networkNodes = {}
|
||||
-- Why are we skipping this again...?
|
||||
-- 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
|
||||
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 friendsFrame = CreateFrame("Frame")
|
||||
friendsFrame:RegisterEvent("FRIENDLIST_UPDATE")
|
||||
friendsFrame:SetScript("OnEvent", function(self, event, ...) end)
|
||||
|
||||
local function NetworkTick()
|
||||
if Heimdall_Data.config.network.debug then print("Network module is updating.") end
|
||||
ShowFriends()
|
||||
updatePending = true
|
||||
C_Timer.After(1, function()
|
||||
if updatePending then FriendListUpdate() end
|
||||
end)
|
||||
shared.network.ticker = C_Timer.NewTimer(Heimdall_Data.config.network.updateInterval, NetworkTick, 1)
|
||||
end
|
||||
|
||||
NetworkTick()
|
||||
print("[Heimdall] Network module loaded")
|
||||
end
|
||||
NetworkTick()
|
||||
print("[Heimdall] Network module loaded")
|
||||
end,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user