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 BonkDetector InitTable
|
||||||
---@field Noter InitTable
|
---@field Noter InitTable
|
||||||
---@field Network InitTable
|
---@field Network InitTable
|
||||||
|
---@field NetworkMessenger InitTable
|
||||||
|
|
||||||
--- Config ---
|
--- Config ---
|
||||||
---@class HeimdallConfig
|
---@class HeimdallConfig
|
||||||
@@ -68,7 +69,9 @@ local function init()
|
|||||||
---@field bonkDetector HeimdallBonkDetectorConfig
|
---@field bonkDetector HeimdallBonkDetectorConfig
|
||||||
---@field noter HeimdallNoterConfig
|
---@field noter HeimdallNoterConfig
|
||||||
---@field network HeimdallNetworkConfig
|
---@field network HeimdallNetworkConfig
|
||||||
|
---@field networkMessenger HeimdallNetworkMessengerConfig
|
||||||
---@field whisperNotify table<string, string>
|
---@field whisperNotify table<string, string>
|
||||||
|
---@field addonPrefix string
|
||||||
---@field stinkies table<string, boolean>
|
---@field stinkies table<string, boolean>
|
||||||
---@field agents table<string, string>
|
---@field agents table<string, string>
|
||||||
---@field scale number
|
---@field scale number
|
||||||
@@ -131,13 +134,11 @@ local function init()
|
|||||||
---@field enabled boolean
|
---@field enabled boolean
|
||||||
---@field debug boolean
|
---@field debug boolean
|
||||||
|
|
||||||
|
|
||||||
---@class HeimdallAgentTrackerConfig
|
---@class HeimdallAgentTrackerConfig
|
||||||
---@field enabled boolean
|
---@field enabled boolean
|
||||||
---@field debug boolean
|
---@field debug boolean
|
||||||
---@field masterChannel string
|
---@field masterChannel string
|
||||||
|
|
||||||
|
|
||||||
---@class HeimdallEmoterConfig
|
---@class HeimdallEmoterConfig
|
||||||
---@field enabled boolean
|
---@field enabled boolean
|
||||||
---@field debug boolean
|
---@field debug boolean
|
||||||
@@ -222,9 +223,12 @@ local function init()
|
|||||||
---@field enabled boolean
|
---@field enabled boolean
|
||||||
---@field debug boolean
|
---@field debug boolean
|
||||||
---@field members string[]
|
---@field members string[]
|
||||||
---@field addonPrefix string
|
|
||||||
---@field updateInterval number
|
---@field updateInterval number
|
||||||
|
|
||||||
|
---@class HeimdallNetworkMessengerConfig
|
||||||
|
---@field enabled boolean
|
||||||
|
---@field debug boolean
|
||||||
|
|
||||||
--- Data ---
|
--- Data ---
|
||||||
---@class HeimdallMessengerData
|
---@class HeimdallMessengerData
|
||||||
---@field queue table<string, Message>
|
---@field queue table<string, Message>
|
||||||
@@ -445,9 +449,13 @@ local function init()
|
|||||||
enabled = shared.GetOrDefault(Heimdall_Data, { "config", "network", "enabled" }, false),
|
enabled = shared.GetOrDefault(Heimdall_Data, { "config", "network", "enabled" }, false),
|
||||||
debug = shared.GetOrDefault(Heimdall_Data, { "config", "network", "debug" }, false),
|
debug = shared.GetOrDefault(Heimdall_Data, { "config", "network", "debug" }, false),
|
||||||
members = shared.GetOrDefault(Heimdall_Data, { "config", "network", "members" }, {}),
|
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),
|
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 = {
|
shared.raceMap = {
|
||||||
|
|||||||
@@ -1926,20 +1926,61 @@ function shared.Config.Init()
|
|||||||
enableButton:UpdateColor(Heimdall_Data.config.network.enabled)
|
enableButton:UpdateColor(Heimdall_Data.config.network.enabled)
|
||||||
networkConfigFrame:Add(enableButton, 1, 12)
|
networkConfigFrame:Add(enableButton, 1, 12)
|
||||||
|
|
||||||
local addonPrefix = CreateBasicSmallEditBox("HeimdallNetworkConfigAddonPrefix",
|
local members = CreateBasicBigEditBox("HeimdallNetworkConfigMembers",
|
||||||
networkConfigFrame.frame, shared.L[Heimdall_Data.config.locale].config.addonPrefix,
|
networkConfigFrame.frame, shared.L[Heimdall_Data.config.locale].config.members,
|
||||||
Heimdall_Data.config.network.addonPrefix,
|
table.concat(Heimdall_Data.config.network.members, ","),
|
||||||
function(self)
|
function(self)
|
||||||
local text = self:GetText()
|
local text = self:GetText()
|
||||||
if string.match(text, "%S+") then
|
Heimdall_Data.config.network.members = StringToArray(text, ",")
|
||||||
Heimdall_Data.config.network.addonPrefix = text
|
print("Members set to", table.concat(Heimdall_Data.config.network.members, ","))
|
||||||
print("Addon prefix set to", tostring(text))
|
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
|
else
|
||||||
print("Invalid addon prefix", tostring(text))
|
print("Invalid update interval", text)
|
||||||
self:SetText(Heimdall_Data.config.network.addonPrefix)
|
self:SetText(tostring(Heimdall_Data.config.network.updateInterval))
|
||||||
end
|
end
|
||||||
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",
|
local members = CreateBasicBigEditBox("HeimdallNetworkConfigMembers",
|
||||||
networkConfigFrame.frame, shared.L[Heimdall_Data.config.locale].config.members,
|
networkConfigFrame.frame, shared.L[Heimdall_Data.config.locale].config.members,
|
||||||
@@ -1968,6 +2009,29 @@ function shared.Config.Init()
|
|||||||
networkConfigFrame:Add(updateInterval, 2, 6)
|
networkConfigFrame:Add(updateInterval, 2, 6)
|
||||||
end
|
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
|
-- Whisper Notify
|
||||||
do
|
do
|
||||||
local r, g, b, a = GetNextColor()
|
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