diff --git a/sonic-radiance.love/game/modules/tweenmanager/init.lua b/sonic-radiance.love/game/modules/tweenmanager/init.lua index 85c919f..ed93665 100644 --- a/sonic-radiance.love/game/modules/tweenmanager/init.lua +++ b/sonic-radiance.love/game/modules/tweenmanager/init.lua @@ -7,7 +7,7 @@ function TweenManager:new(subject) self.timer = 0 self.tweens = {} - self.targets = {} + self.switches = {} end function TweenManager:newTween(start, duration, target, easing) @@ -20,6 +20,16 @@ function TweenManager:newTween(start, duration, target, easing) table.insert(self.tweens, newTween) end +function TweenManager:newSwitch(start, bools) + local newSwitch = {} + -- we add the data into a tween wrapper + newSwitch.bools = bools + newSwitch.start = self.timer + start -- /!\ START IS RELATIVE TO CURRENT TIME + newSwitch.clear = newSwitch.start + 1 + + table.insert(self.switches, newSwitch) +end + function TweenManager:update(dt) self.timer = self.timer + dt @@ -29,6 +39,22 @@ function TweenManager:update(dt) end end + for i, switch in ipairs(self.switches) do + if (self.timer > switch.start) then + -- We test each boolean in the switch + for i, bool in ipairs(switch.bools) do + -- if it's nil, we set it to true + if self.subject[bool] == nil then + self.subject[bool] = true + else + -- if it's not nil, we reverse the boolean + self.subject[bool] = (self.subject[bool] == false) + end + end + table.remove(self.switches, i) + end + end + self:clearEndedTweens() end