Refactor Heimdall module fields for improved organization and clarity
This commit is contained in:
39
Heimdall.lua
39
Heimdall.lua
@@ -37,29 +37,29 @@ local function init()
|
|||||||
---@field GetLocaleForChannel fun(channel: string): string
|
---@field GetLocaleForChannel fun(channel: string): string
|
||||||
---@field WhoQueryService WhoQueryService
|
---@field WhoQueryService WhoQueryService
|
||||||
---@field Whoer InitTable|{ShouldNotifyForZone: fun(zone: string): boolean}
|
---@field Whoer InitTable|{ShouldNotifyForZone: fun(zone: string): boolean}
|
||||||
---@field Messenger InitTable
|
---@field AchievementSniffer InitTable
|
||||||
---@field Spotter InitTable
|
|
||||||
---@field DeathReporter InitTable
|
|
||||||
---@field Inviter InitTable
|
|
||||||
---@field Dueler InitTable
|
|
||||||
---@field Bully InitTable
|
|
||||||
---@field AgentTracker AgentTracker
|
---@field AgentTracker AgentTracker
|
||||||
---@field Emoter InitTable
|
|
||||||
---@field Echoer InitTable
|
|
||||||
---@field Macroer InitTable
|
|
||||||
---@field Commander InitTable
|
|
||||||
---@field StinkyTracker StinkyTracker
|
|
||||||
---@field CombatAlerter InitTable
|
|
||||||
---@field Config InitTable
|
|
||||||
---@field Sniffer InitTable
|
|
||||||
---@field MinimapTagger InitTable
|
|
||||||
---@field BonkDetector InitTable
|
---@field BonkDetector InitTable
|
||||||
---@field Noter InitTable
|
---@field Bully InitTable
|
||||||
|
---@field CombatAlerter InitTable
|
||||||
|
---@field Commander InitTable
|
||||||
|
---@field Config InitTable
|
||||||
|
---@field Configurator InitTable
|
||||||
|
---@field DeathReporter InitTable
|
||||||
|
---@field Dueler InitTable
|
||||||
|
---@field Echoer InitTable
|
||||||
|
---@field Emoter InitTable
|
||||||
|
---@field Inviter InitTable
|
||||||
|
---@field Macroer InitTable
|
||||||
|
---@field Messenger InitTable
|
||||||
|
---@field MinimapTagger InitTable
|
||||||
---@field Network InitTable
|
---@field Network InitTable
|
||||||
---@field NetworkMessenger InitTable
|
---@field NetworkMessenger InitTable
|
||||||
|
---@field Noter InitTable
|
||||||
|
---@field Sniffer InitTable
|
||||||
|
---@field Spotter InitTable
|
||||||
---@field StinkyCache InitTable
|
---@field StinkyCache InitTable
|
||||||
---@field Configurator InitTable
|
---@field StinkyTracker StinkyTracker
|
||||||
---@field AchievementSniffer InitTable
|
|
||||||
|
|
||||||
--- Config ---
|
--- Config ---
|
||||||
---@class HeimdallConfig
|
---@class HeimdallConfig
|
||||||
@@ -284,9 +284,6 @@ local function init()
|
|||||||
---@field whoTicker Timer?
|
---@field whoTicker Timer?
|
||||||
---@field ignored table<string, boolean>
|
---@field ignored table<string, boolean>
|
||||||
|
|
||||||
---@class HeimdallNetworkData
|
|
||||||
---@field ticker Timer?
|
|
||||||
|
|
||||||
---@class HeimdallStinkyCacheData
|
---@class HeimdallStinkyCacheData
|
||||||
---@field stinkies table<string, {value: number, timestamp: number}>
|
---@field stinkies table<string, {value: number, timestamp: number}>
|
||||||
|
|
||||||
|
|||||||
@@ -2,13 +2,6 @@ local _, shared = ...
|
|||||||
---@cast shared HeimdallShared
|
---@cast shared HeimdallShared
|
||||||
local ModuleName = "AgentTracker"
|
local ModuleName = "AgentTracker"
|
||||||
|
|
||||||
---@class AgentTracker
|
|
||||||
---@field Init fun(): nil
|
|
||||||
---@field Track fun(name: string): boolean
|
|
||||||
---@field IsAgent fun(name: string): boolean
|
|
||||||
---@field OnChange fun(callback: fun(name: string)): nil
|
|
||||||
---@field ForEach fun(callback: fun(name: string)): nil
|
|
||||||
|
|
||||||
---@class AgentTrackerData
|
---@class AgentTrackerData
|
||||||
---@field agents ReactiveValue<table<string, string>>
|
---@field agents ReactiveValue<table<string, string>>
|
||||||
|
|
||||||
@@ -16,6 +9,8 @@ shared.agentTracker.agents = ReactiveValue(Heimdall_Data.config.agents)
|
|||||||
|
|
||||||
---@class AgentTracker
|
---@class AgentTracker
|
||||||
shared.AgentTracker = {
|
shared.AgentTracker = {
|
||||||
|
---@param name string
|
||||||
|
---@return boolean
|
||||||
Track = function(name)
|
Track = function(name)
|
||||||
if not name then return false end
|
if not name then return false end
|
||||||
local exists = shared.AgentTracker.IsAgent(name)
|
local exists = shared.AgentTracker.IsAgent(name)
|
||||||
@@ -28,11 +23,15 @@ shared.AgentTracker = {
|
|||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end,
|
end,
|
||||||
|
---@param name string
|
||||||
|
---@return boolean
|
||||||
IsAgent = function(name)
|
IsAgent = function(name)
|
||||||
if not name then return false end
|
if not name then return false end
|
||||||
return shared.agentTracker.agents[name] ~= nil
|
return shared.agentTracker.agents[name] ~= nil
|
||||||
end,
|
end,
|
||||||
|
---@param callback fun(agent: string)
|
||||||
OnChange = function(callback) shared.agentTracker.agents:onChange(callback) end,
|
OnChange = function(callback) shared.agentTracker.agents:onChange(callback) end,
|
||||||
|
---@param callback fun(agent: string)
|
||||||
ForEach = function(callback)
|
ForEach = function(callback)
|
||||||
---@type table<string, string>
|
---@type table<string, string>
|
||||||
local agents = shared.agentTracker.agents:get()
|
local agents = shared.agentTracker.agents:get()
|
||||||
@@ -40,6 +39,7 @@ shared.AgentTracker = {
|
|||||||
callback(name)
|
callback(name)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
---@return nil
|
||||||
Init = function()
|
Init = function()
|
||||||
--/run Heimdall_Data.config.agents["Cyheuraeth"]=date("%Y-%m-%dT%H:%M:%S")
|
--/run Heimdall_Data.config.agents["Cyheuraeth"]=date("%Y-%m-%dT%H:%M:%S")
|
||||||
---@type table<string, boolean>
|
---@type table<string, boolean>
|
||||||
|
|||||||
@@ -2,72 +2,77 @@ local _, shared = ...
|
|||||||
---@cast shared HeimdallShared
|
---@cast shared HeimdallShared
|
||||||
local ModuleName = "Network"
|
local ModuleName = "Network"
|
||||||
|
|
||||||
---@diagnostic disable-next-line: missing-fields
|
---@class HeimdallNetworkData
|
||||||
shared.Network = {}
|
---@field ticker Timer?
|
||||||
function shared.Network.Init()
|
|
||||||
if not shared.network then shared.network = {} end
|
|
||||||
local updatePending = false
|
|
||||||
|
|
||||||
local function FriendListUpdate()
|
shared.Network = {
|
||||||
updatePending = false
|
Init = function()
|
||||||
if not Heimdall_Data.config.network.enabled then return end
|
if not shared.network then shared.network = {} end
|
||||||
---@type table<string, boolean>
|
local updatePending = false
|
||||||
local friends = {}
|
|
||||||
for i = 1, GetNumFriends() do
|
local function FriendListUpdate()
|
||||||
local name, _, _, _, connected, _, _, _ = GetFriendInfo(i)
|
updatePending = false
|
||||||
if name then
|
if not Heimdall_Data.config.network.enabled then return end
|
||||||
friends[name] = connected
|
---@type table<string, boolean>
|
||||||
if Heimdall_Data.config.network.debug then
|
local friends = {}
|
||||||
print(string.format("[%s] Friend %s is %s", ModuleName, name, connected and "online" or "offline"))
|
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
|
end
|
||||||
else
|
end
|
||||||
if Heimdall_Data.config.network.debug then
|
|
||||||
print(string.format("[%s] Friend %s is nil", ModuleName, i))
|
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
|
||||||
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
|
end
|
||||||
|
|
||||||
for _, member in ipairs(Heimdall_Data.config.network.members) do
|
local friendsFrame = CreateFrame("Frame")
|
||||||
if friends[member] == nil and member ~= UnitName("player") then
|
friendsFrame:RegisterEvent("FRIENDLIST_UPDATE")
|
||||||
if Heimdall_Data.config.network.debug then
|
friendsFrame:SetScript("OnEvent", function(self, event, ...) end)
|
||||||
print(string.format("[%s] Adding friend %s", ModuleName, member))
|
|
||||||
end
|
local function NetworkTick()
|
||||||
AddFriend(member)
|
if Heimdall_Data.config.network.debug then print("Network module is updating.") end
|
||||||
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
|
end
|
||||||
friends[UnitName("player")] = true
|
|
||||||
|
|
||||||
shared.networkNodes = {}
|
NetworkTick()
|
||||||
-- Why are we skipping this again...?
|
print("[Heimdall] Network module loaded")
|
||||||
-- if false then shared.networkNodes[#shared.networkNodes + 1] = UnitName("player") end
|
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
|
|
||||||
|
|||||||
Reference in New Issue
Block a user