Refactor addonprefix out of network

This commit is contained in:
2025-01-15 13:15:18 +01:00
parent 87300bf48a
commit 688f2f4b30
3 changed files with 152 additions and 14 deletions

View File

@@ -47,6 +47,7 @@ local function init()
---@field BonkDetector InitTable
---@field Noter InitTable
---@field Network InitTable
---@field NetworkMessenger InitTable
--- Config ---
---@class HeimdallConfig
@@ -68,7 +69,9 @@ local function init()
---@field bonkDetector HeimdallBonkDetectorConfig
---@field noter HeimdallNoterConfig
---@field network HeimdallNetworkConfig
---@field networkMessenger HeimdallNetworkMessengerConfig
---@field whisperNotify table<string, string>
---@field addonPrefix string
---@field stinkies table<string, boolean>
---@field agents table<string, string>
---@field scale number
@@ -131,13 +134,11 @@ local function init()
---@field enabled boolean
---@field debug boolean
---@class HeimdallAgentTrackerConfig
---@field enabled boolean
---@field debug boolean
---@field masterChannel string
---@class HeimdallEmoterConfig
---@field enabled boolean
---@field debug boolean
@@ -222,9 +223,12 @@ local function init()
---@field enabled boolean
---@field debug boolean
---@field members string[]
---@field addonPrefix string
---@field updateInterval number
---@class HeimdallNetworkMessengerConfig
---@field enabled boolean
---@field debug boolean
--- Data ---
---@class HeimdallMessengerData
---@field queue table<string, Message>
@@ -445,9 +449,13 @@ local function init()
enabled = shared.GetOrDefault(Heimdall_Data, { "config", "network", "enabled" }, false),
debug = shared.GetOrDefault(Heimdall_Data, { "config", "network", "debug" }, false),
members = shared.GetOrDefault(Heimdall_Data, { "config", "network", "members" }, {}),
addonPrefix = shared.GetOrDefault(Heimdall_Data, { "config", "network", "addonPrefix" }, "HEIMDALL_NETWORK"),
updateInterval = shared.GetOrDefault(Heimdall_Data, { "config", "network", "updateInterval" }, 10),
}
},
networkMessenger = {
enabled = shared.GetOrDefault(Heimdall_Data, { "config", "networkMessenger", "enabled" }, false),
debug = shared.GetOrDefault(Heimdall_Data, { "config", "networkMessenger", "debug" }, false),
},
addonPrefix = shared.GetOrDefault(Heimdall_Data, { "config", "addonPrefix" }, "HEIMDALL"),
}
shared.raceMap = {

View File

@@ -1926,20 +1926,61 @@ function shared.Config.Init()
enableButton:UpdateColor(Heimdall_Data.config.network.enabled)
networkConfigFrame:Add(enableButton, 1, 12)
local addonPrefix = CreateBasicSmallEditBox("HeimdallNetworkConfigAddonPrefix",
networkConfigFrame.frame, shared.L[Heimdall_Data.config.locale].config.addonPrefix,
Heimdall_Data.config.network.addonPrefix,
local members = CreateBasicBigEditBox("HeimdallNetworkConfigMembers",
networkConfigFrame.frame, shared.L[Heimdall_Data.config.locale].config.members,
table.concat(Heimdall_Data.config.network.members, ","),
function(self)
local text = self:GetText()
if string.match(text, "%S+") then
Heimdall_Data.config.network.addonPrefix = text
print("Addon prefix set to", tostring(text))
Heimdall_Data.config.network.members = StringToArray(text, ",")
print("Members set to", table.concat(Heimdall_Data.config.network.members, ","))
self:SetText(table.concat(Heimdall_Data.config.network.members, ","))
end)
networkConfigFrame:Add(members, 5, 6)
local updateInterval = CreateBasicSmallEditBox("HeimdallNetworkConfigUpdateInterval",
networkConfigFrame.frame, shared.L[Heimdall_Data.config.locale].config.updateInterval,
tostring(Heimdall_Data.config.network.updateInterval),
function(self)
local text = self:GetText()
if string.match(text, "%d+") then
Heimdall_Data.config.network.updateInterval = tonumber(text)
print("Update interval set to", tostring(text))
else
print("Invalid addon prefix", tostring(text))
self:SetText(Heimdall_Data.config.network.addonPrefix)
print("Invalid update interval", text)
self:SetText(tostring(Heimdall_Data.config.network.updateInterval))
end
end)
networkConfigFrame:Add(addonPrefix, 2, 6)
networkConfigFrame:Add(updateInterval, 2, 6)
end
-- NetworkMessenger
do
local r, g, b, a = GetNextColor()
local networkConfigFrame = GridFrame.new("HeimdallNetworkConfig",
UIParent, 12, 20)
networkConfigFrame.frame:SetBackdropColor(r, g, b, 0.3)
configFrame:Add(networkConfigFrame, 11, 3)
local title = CreateFancyText("HeimdallNetworkConfigTitle", networkConfigFrame.frame,
shared.L[Heimdall_Data.config.locale].config.network,
{ r, g, b, a })
networkConfigFrame:Add(title, 1, 8)
local debugButton = CreateBasicButton("HeimdallNetworkConfigDebugButton",
networkConfigFrame.frame, shared.L[Heimdall_Data.config.locale].config.debug, function()
Heimdall_Data.config.network.debug = not Heimdall_Data.config.network.debug
return Heimdall_Data.config.network.debug
end)
debugButton:UpdateColor(Heimdall_Data.config.network.debug)
networkConfigFrame:Add(debugButton, 1, 4)
local enableButton = CreateBasicButton("HeimdallNetworkConfigEnableButton",
networkConfigFrame.frame, shared.L[Heimdall_Data.config.locale].config.enabled, function()
Heimdall_Data.config.network.enabled = not Heimdall_Data.config.network.enabled
return Heimdall_Data.config.network.enabled
end)
enableButton:UpdateColor(Heimdall_Data.config.network.enabled)
networkConfigFrame:Add(enableButton, 1, 12)
local members = CreateBasicBigEditBox("HeimdallNetworkConfigMembers",
networkConfigFrame.frame, shared.L[Heimdall_Data.config.locale].config.members,
@@ -1968,6 +2009,29 @@ function shared.Config.Init()
networkConfigFrame:Add(updateInterval, 2, 6)
end
-- Addon prefix
do
local r, g, b, a = GetNextColor()
local addonPrefixConfigFrame = GridFrame.new("HeimdallAddonPrefixConfig",
UIParent, 12, 20)
addonPrefixConfigFrame.frame:SetBackdropColor(r, g, b, 0.3)
configFrame:Add(addonPrefixConfigFrame, 5, 1)
local title = CreateFancyText("HeimdallAddonPrefixConfigTitle", addonPrefixConfigFrame.frame,
shared.L[Heimdall_Data.config.locale].config.addonPrefix,
{ r, g, b, a })
addonPrefixConfigFrame:Add(title, 1, 12)
local addonPrefix = CreateBasicSmallEditBox("HeimdallAddonPrefixConfigAddonPrefix",
addonPrefixConfigFrame.frame, shared.L[Heimdall_Data.config.locale].config.addonPrefix,
Heimdall_Data.config.addonPrefix,
function(self)
local text = self:GetText()
Heimdall_Data.config.addonPrefix = text
end)
addonPrefixConfigFrame:Add(addonPrefix, 2, 12)
end
-- Whisper Notify
do
local r, g, b, a = GetNextColor()

View File

@@ -0,0 +1,66 @@
local addonname, shared = ...
---@cast shared HeimdallShared
---@cast addonname string
local ModuleName = "NetworkMessenger"
---@diagnostic disable-next-line: missing-fields
shared.NetworkMessenger = {}
function shared.NetworkMessenger.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[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] NetworkMessenger module loaded")
end