From 22dee8b536b5ddee2586b00ed136f1f23902a8bb Mon Sep 17 00:00:00 2001 From: omicron Date: Sat, 8 Apr 2023 19:35:08 +0200 Subject: [PATCH] Trigger:SetState now also takes doUpdate boolean If the state the state does change and the trigger is active and doUpdate is true, then the indicator is updated with the given data. --- src/types/triggers/auratrigger.lua | 6 +++--- src/types/triggers/statustrigger.lua | 2 +- src/types/triggers/trigger.lua | 7 ++++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/types/triggers/auratrigger.lua b/src/types/triggers/auratrigger.lua index 36d0ddb..73dcace 100644 --- a/src/types/triggers/auratrigger.lua +++ b/src/types/triggers/auratrigger.lua @@ -51,7 +51,7 @@ end --- Reset the AuraTrigger to the default state function AuraTrigger:Reset() self.count = 0 - self:SetState(self.count >= self.requiredCount) + self:SetState(self.count >= self.requiredCount, nil, false) end ---Check if a given aura matches this AuraTrigger @@ -73,7 +73,7 @@ function AuraTrigger:AddAura(aura) return end self.count = self.count + 1 - self:SetState(self.count >= self.requiredCount, {stacks=aura.applications}) + self:SetState(self.count >= self.requiredCount, {stacks=aura.applications}, false) end ---Inform the trigger about an updated aura @@ -92,5 +92,5 @@ function AuraTrigger:RemoveAura(aura) return end self.count = self.count - 1 - self:SetState(self.count >= self.requiredCount) + self:SetState(self.count >= self.requiredCount, nil, false) end diff --git a/src/types/triggers/statustrigger.lua b/src/types/triggers/statustrigger.lua index a537ca6..7c2e188 100644 --- a/src/types/triggers/statustrigger.lua +++ b/src/types/triggers/statustrigger.lua @@ -49,5 +49,5 @@ end -- status: -- Must be a valid UnitAuraInfo function StatusTrigger:UpdateStatus(count) - self:SetState(count >= self.requiredCount) + self:SetState(count >= self.requiredCount, nil, false) end diff --git a/src/types/triggers/trigger.lua b/src/types/triggers/trigger.lua index f991963..cb13da4 100644 --- a/src/types/triggers/trigger.lua +++ b/src/types/triggers/trigger.lua @@ -48,9 +48,8 @@ end ---Set the state of the trigger. Will activate the indicator if needed. ---@param data table | nil ---@param state boolean -function Trigger:SetState(state, data) +function Trigger:SetState(state, data, doUpdate) state = state ~= self.invert -- state xor inverted - if self.active ~= state then if state then self.indicator:Show(data) @@ -58,12 +57,14 @@ function Trigger:SetState(state, data) self.indicator:Hide() end self.active = state + elseif doUpdate and self.active then + self.indicator:Update(data) end end -- Reset the trigger to the default state. If this changes the activation of the -- trigger then the target will be notified. function Trigger:Reset() - self:SetState(false) + self:SetState(false, nil, false) end