Rework data structure

This commit is contained in:
2024-12-16 13:04:47 +01:00
parent 58cf0620a2
commit 34c539c4d8
2 changed files with 36 additions and 59 deletions

View File

@@ -1,53 +1,16 @@
local addonname, data = ...
---@cast data HeimdallData
local addonname, shared = ...
---@cast shared CykaShared
---@cast addonname string
data.Inviter = {}
function data.Inviter.Init()
if not data.config.inviter.enabled then
print("Heimdall - Inviter disabled")
---@class Autoloot
---@field Init fun()
shared.Autoloot = {}
function shared.Autoloot.Init()
if not shared.config.autoloot.enabled then
print("Cyka - Autoloot disabled")
return
end
local inviterGroupFrame = CreateFrame("Frame")
inviterGroupFrame:RegisterEvent("GROUP_ROSTER_UPDATE")
inviterGroupFrame:SetScript("OnEvent", function(self, event, ...)
if not UnitIsGroupLeader("player") then return end
if not IsInRaid() then
ConvertToRaid()
end
if not IsEveryoneAssistant() then
SetEveryoneIsAssistant(true)
end
end)
local inviterChannelFrame = CreateFrame("Frame")
inviterChannelFrame:RegisterEvent("CHAT_MSG_CHANNEL")
inviterChannelFrame:SetScript("OnEvent", function(self, event, msg, sender, ...)
local channelId = select(6, ...)
local channelname = ""
---@type any[]
local channels = { GetChannelList() }
for i = 1, #channels, 2 do
---@type number
local id = channels[i]
---@type string
local name = channels[i + 1]
if id == channelId then
channelname = name
end
end
if channelname ~= data.config.inviter.listeningChannel then
return
end
if msg == data.config.inviter.keyword then
InviteUnit(sender)
end
end)
print("Heimdall - Inviter loaded")
print("Cyka - Autoloot loaded")
end

View File

@@ -1,20 +1,30 @@
local addonname, data = ...
---@cast data CykaData
local addonname, shared = ...
---@cast shared CykaShared
---@cast addonname string
---@class CykaPersistentData
---@field config CykaConfig
---@field data CykaData
---@class CykaShared
---@field config CykaConfig
---@field data CykaData
---@field GetOrDefault fun(table: table<any, any>, keys: string[], default: any): any
---@field Autoloot Autoloot
---@class CykaData
---@class CykaConfig
---@field autoloot CykaAutolootConfig
---@class CykaAutolootConfig
---@field enabled boolean
local function init()
---@class CykaData
if not CykaPersistentData then CykaPersistentData = {} end
if not CykaPersistentData.config then CykaPersistentData.config = {} end
---@class CykaData
---@field config CykaConfig
---@field GetOrDefault fun(table: table<any, any>, keys: string[], default: any): any
--- Config ---
---@class CykaConfig
data.GetOrDefault = function(table, keys, default)
shared.GetOrDefault = function(table, keys, default)
local value = default
if not table then return value end
if not keys then return value end
@@ -35,7 +45,11 @@ local function init()
return value
end
data.config = {}
shared.config = {
autoloot = {
enabled = shared.GetOrDefault(CykaPersistentData.config, { "autoloot", "enabled" }, true),
}
}
print("Cyka loaded!")
end