Refactor addonprefix out of network
This commit is contained in:
18
Heimdall.lua
18
Heimdall.lua
@@ -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 = {
|
||||
|
@@ -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()
|
||||
|
66
Modules/NetworkMessenger.lua
Normal file
66
Modules/NetworkMessenger.lua
Normal 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
|
Reference in New Issue
Block a user