Add Trigger.CreateFromConfig function to help initialize new triggers

This commit is contained in:
omicron committed 2023-04-10 15:51:20 +02:00
1 parent 0436f8a0e0
commit 3a1cc35a1e
5 files changed
+55 -24

No files matched your search

+17
View File
@@ -27,6 +27,23 @@ local Trigger = types.Trigger
local AuraTrigger = types.CreateClass("AuraTrigger", Trigger)
types.AuraTrigger = AuraTrigger
---Creates a new AuraTrigger from a config description and attaches it to the
---correct data source
---@param unit UnitFrame
---@param config table
---@return AuraTrigger
function AuraTrigger.CreateFromConfig(unit, config)
local trigger = AuraTrigger:new(
config.spellId,
config.own,
config.requiredCount,
config.invert
)
unit.auras:AddTrigger(trigger)
return trigger
end
---@return AuraTrigger
function AuraTrigger.new(cls, ...)
--- I really dislike duplicating this everywhere but it makes
+14
View File
@@ -30,6 +30,20 @@ local Trigger = types.Trigger
local MultiTrigger = types.CreateClass("MultiTrigger", Trigger)
types.MultiTrigger = MultiTrigger
---Creates a new MultiTrigger from a config description
---@param unit UnitFrame
---@param config table
---@return MultiTrigger
function MultiTrigger.CreateFromConfig(unit, config)
local trigger = MultiTrigger:new(config.invert)
for _, childConfig in ipairs(config.children) do
local childType = types[childConfig.kind]
local child = childType.CreateFromConfig(unit, childConfig)
trigger:AddTrigger(child)
end
return trigger
end
--- Initialize a new Trigger object
---@param invert boolean|nil
function MultiTrigger:Init(invert)
+10
View File
@@ -25,6 +25,16 @@ local Trigger = types.Trigger
local StatusTrigger = types.CreateClass("StatusTrigger", Trigger)
types.StatusTrigger = StatusTrigger
---Creates a new StatusTrigger from a config description
---@param unit UnitFrame
---@param config table
function StatusTrigger.CreateFromConfig(unit, config)
local trigger = StatusTrigger:new(config.status, config.requiredCount,
config.invert)
unit.auras:AddTrigger(trigger)
return trigger
end
---@return StatusTrigger
function StatusTrigger.new(cls, ...)
--- I really dislike duplicating this everywhere but it makes
+8
View File
@@ -26,6 +26,14 @@ local types = omi.GetModule("types")
local Trigger = types.CreateClass("Trigger")
types.Trigger = Trigger
---@param unit UnitFrame
---@param config table
---@return Trigger
function Trigger.CreateFromConfig(unit, config)
error("Must override")
end
--- Initialize a new Trigger object
---@param invert boolean|nil
function Trigger:Init(invert)