Add structure for achievement sniffer

This commit is contained in:
2025-01-26 22:44:59 +01:00
parent 950f95cef1
commit c61a4b0c04
4 changed files with 119 additions and 3 deletions

View File

@@ -58,6 +58,7 @@ local function init()
---@field NetworkMessenger InitTable
---@field StinkyCache InitTable
---@field Configurator InitTable
---@field AchievementSniffer InitTable
--- Config ---
---@class HeimdallConfig
@@ -82,6 +83,7 @@ local function init()
---@field networkMessenger HeimdallNetworkMessengerConfig
---@field configurator HeimdallConfiguratorConfig
---@field stinkyCache HeimdallStinkyCacheConfig
---@field achievementSniffer HeimdallAchievementSnifferConfig
---@field whisperNotify table<string, string>
---@field addonPrefix string
---@field stinkies table<string, boolean>
@@ -255,6 +257,13 @@ local function init()
---@field commander string
---@field ttl number
---@class HeimdallAchievementSnifferConfig
---@field enabled boolean
---@field debug boolean
---@field texture string
---@field offsetX number
---@field offsetY number
--- Data ---
---@class HeimdallMessengerData
---@field queue table<string, Message>
@@ -505,6 +514,13 @@ local function init()
commander = shared.GetOrDefault(Heimdall_Data, { "config", "stinkyCache", "commander" }, "Heimdállr"),
ttl = shared.GetOrDefault(Heimdall_Data, { "config", "stinkyCache", "ttl" }, 10),
},
achievementSniffer = {
enabled = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "enabled" }, false),
debug = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "debug" }, false),
texture = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "texture" }, "Aura53.tga"),
offsetX = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "offsetX" }, 0),
offsetY = shared.GetOrDefault(Heimdall_Data, { "config", "achievementSniffer", "offsetY" }, 0),
},
addonPrefix = shared.GetOrDefault(Heimdall_Data, { "config", "addonPrefix" }, "HEIMDALL"),
channelLocale = shared.GetOrDefault(Heimdall_Data, { "config", "channelLocale" }, {}),
}
@@ -685,6 +701,7 @@ local function init()
shared.NetworkMessenger.Init()
shared.Configurator.Init()
shared.StinkyCache.Init()
shared.AchievementSniffer.Init()
print("Heimdall loaded!")
end

View File

@@ -3,7 +3,7 @@
## Version: 3.8.15
## Notes: Watches over areas and alerts when hostiles spotted
## Author: Cyka
## SavedVariables: Heimdall_Data
## SavedVariables: Heimdall_Data, Heimdall_Achievements
#core
_L.lua
@@ -33,4 +33,5 @@ Modules/Noter.lua
Modules/NetworkMessenger.lua
Modules/StinkyCache.lua
Modules/Configurator.lua
Modules/AchievementSniffer.lua
Heimdall.lua

View File

@@ -0,0 +1,27 @@
local addonname, shared = ...
---@cast shared HeimdallShared
---@cast addonname string
local ModuleName = "AchievementSniffer"
local HeimdallRoot = "Interface\\AddOns\\Heimdall\\"
local TextureRoot = HeimdallRoot .. "Texture\\"
---@diagnostic disable-next-line: missing-fields
shared.AchievementSniffer = {}
function shared.AchievementSniffer.Init()
if Heimdall_Data.config.achievementSniffer.debug then
print(string.format("[%s] Module initialized", ModuleName))
end
local framePool = {}
for i = 1, 40 do
local frame = CreateFrame("Frame")
frame.custom = { busy = false }
local texture = frame:CreateTexture(nil, "ARTWORK")
texture:SetAllPoints(frame)
texture:SetTexture(TextureRoot .. Heimdall_Data.config.achievementSniffer.texture)
table.insert(framePool, frame)
end
print("[Heimdall] AchievementSniffer loaded")
end

View File

@@ -571,13 +571,15 @@ function shared.Config.Init()
configFrame:Add(debug, 2, 1)
local russian = nil
local english = CreateBasicButton("HeimdallConfigEnglish", configFrame.frame, shared._L("english", Heimdall_Data.config.locale), function()
local english = CreateBasicButton("HeimdallConfigEnglish", configFrame.frame,
shared._L("english", Heimdall_Data.config.locale), function()
Heimdall_Data.config.locale = "en"
russian:UpdateColor(false)
return Heimdall_Data.config.locale == "en"
end)
english:UpdateColor(Heimdall_Data.config.locale == "en")
russian = CreateBasicButton("HeimdallConfigRussian", configFrame.frame, shared._L("russian", Heimdall_Data.config.locale), function()
russian = CreateBasicButton("HeimdallConfigRussian", configFrame.frame,
shared._L("russian", Heimdall_Data.config.locale), function()
Heimdall_Data.config.locale = "ru"
english:UpdateColor(false)
return Heimdall_Data.config.locale == "ru"
@@ -1990,6 +1992,75 @@ function shared.Config.Init()
networkMessengerConfigFrame:Add(interval, 2, 6)
end
-- AchievementSniffer
do
local r, g, b, a = GetNextColor()
local achievementSnifferConfigFrame = GridFrame.new("HeimdallAchievementSnifferConfig",
UIParent, 12, 20)
achievementSnifferConfigFrame.frame:SetBackdropColor(r, g, b, 0.3)
configFrame:Add(achievementSnifferConfigFrame, 14, 3)
local title = CreateFancyText("HeimdallAchievementSnifferConfigTitle", achievementSnifferConfigFrame.frame,
shared._L("achievementSniffer", Heimdall_Data.config.locale),
{ r, g, b, a })
achievementSnifferConfigFrame:Add(title, 1, 8)
local debugButton = CreateBasicButton("HeimdallAchievementSnifferConfigDebugButton",
achievementSnifferConfigFrame.frame, shared._L("debug", Heimdall_Data.config.locale), function()
Heimdall_Data.config.achievementSniffer.debug = not Heimdall_Data.config.achievementSniffer.debug
return Heimdall_Data.config.achievementSniffer.debug
end)
debugButton:UpdateColor(Heimdall_Data.config.achievementSniffer.debug)
achievementSnifferConfigFrame:Add(debugButton, 1, 4)
local enableButton = CreateBasicButton("HeimdallAchievementSnifferConfigEnableButton",
achievementSnifferConfigFrame.frame, shared._L("enabled", Heimdall_Data.config.locale), function()
Heimdall_Data.config.achievementSniffer.enabled = not Heimdall_Data.config.achievementSniffer.enabled
return Heimdall_Data.config.achievementSniffer.enabled
end)
enableButton:UpdateColor(Heimdall_Data.config.achievementSniffer.enabled)
achievementSnifferConfigFrame:Add(enableButton, 2, 3)
local texture = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigTexture",
achievementSnifferConfigFrame.frame, shared._L("texture", Heimdall_Data.config.locale),
Heimdall_Data.config.achievementSniffer.texture,
function(self)
local text = self:GetText()
Heimdall_Data.config.achievementSniffer.texture = text
end)
achievementSnifferConfigFrame:Add(texture, 2, 3)
local offsetX = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigOffsetX",
achievementSnifferConfigFrame.frame, shared._L("offsetX", Heimdall_Data.config.locale),
tostring(Heimdall_Data.config.achievementSniffer.offsetX),
function(self)
local text = self:GetText()
if string.match(text, "%d+") then
Heimdall_Data.config.achievementSniffer.offsetX = tonumber(text)
print("Offset X set to", tostring(text))
else
print("Invalid offset X", text)
self:SetText(tostring(Heimdall_Data.config.achievementSniffer.offsetX))
end
end)
achievementSnifferConfigFrame:Add(offsetX, 2, 3)
local offsetY = CreateBasicSmallEditBox("HeimdallAchievementSnifferConfigOffsetY",
achievementSnifferConfigFrame.frame, shared._L("offsetY", Heimdall_Data.config.locale),
tostring(Heimdall_Data.config.achievementSniffer.offsetY),
function(self)
local text = self:GetText()
if string.match(text, "%d+") then
Heimdall_Data.config.achievementSniffer.offsetY = tonumber(text)
print("Offset Y set to", tostring(text))
else
print("Invalid offset Y", text)
self:SetText(tostring(Heimdall_Data.config.achievementSniffer.offsetY))
end
end)
achievementSnifferConfigFrame:Add(offsetY, 2, 3)
end
-- Addon prefix
do
local r, g, b, a = GetNextColor()