diff --git a/sonic-radiance.love/core/modules/world/actors/utils/timer.lua b/sonic-radiance.love/core/modules/world/actors/utils/timer.lua index 5ba7c3f..2f19e8a 100644 --- a/sonic-radiance.love/core/modules/world/actors/utils/timer.lua +++ b/sonic-radiance.love/core/modules/world/actors/utils/timer.lua @@ -24,6 +24,7 @@ local Timer = Object:extend() function Timer:new(actor, name, t) + self.baseTime = t self.time = t self.actor = actor self.name = name @@ -36,6 +37,20 @@ function Timer:update(dt) end end +function Timer:delay(time, absolute) + if (absolute == true) then + self.baseTime = self.baseTime + (time - self.time) + self.time = time + else + self.baseTime = self.baseTime + time + self.time = self.time + time + end +end + +function Timer:getInfo() + return self.time, self.baseTime, (self.time / self.baseTime) +end + function Timer:finish() self.actor:timerResponse(self.name) self.actor.timers[self.name] = nil diff --git a/sonic-radiance.love/game/modules/tweenmanager/init.lua b/sonic-radiance.love/game/modules/tweenmanager/init.lua index 8bd7794..3be1df4 100644 --- a/sonic-radiance.love/game/modules/tweenmanager/init.lua +++ b/sonic-radiance.love/game/modules/tweenmanager/init.lua @@ -23,10 +23,28 @@ function TweenManager:newTween(start, duration, target, easing) table.insert(self.tweens, newTween) end +-- TIMER FUNCTIONS +-- Help to get info from timers + function TweenManager:newTimer(start, name) self.timers[name] = Timer(self, name, start) end +function TweenManager:delayTimer(time, name, absolute) + if (self.timers[name] ~= nil) then + self.timers[name]:delay(time, absolute) + end +end + +function TweenManager:getTimerInfo(name) + if (self.timers[name] ~= nil) then + self.timers[name]:getInfo() + end +end + +-- SWITCH FUNCTIONS +-- Help to handle switches + function TweenManager:newSwitch(start, bools) local newSwitch = {} -- we add the data into a tween wrapper