From 769fa35f386ac962e410b05c007a004b732c9154 Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Sun, 26 Jan 2025 05:20:23 +1100 Subject: [PATCH] fix(timer): redefine local function as method The previous commit added a private property, but they cannot be set outside of class methods. Added an error when starting a running timer, too. --- imports/timer/shared.lua | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/imports/timer/shared.lua b/imports/timer/shared.lua index 6e843c0c..ce6aebff 100644 --- a/imports/timer/shared.lua +++ b/imports/timer/shared.lua @@ -35,27 +35,28 @@ function timer:constructor(time, onEnd, async) self:start(async) end -function timer:start(async) - if self.private.startTime > 0 then return end +---@protected +function timer:run() + while self:isPaused() or self:getTimeLeft('ms') > 0 do + Wait(0) + end - self.private.startTime = GetGameTimer() + if self.private.triggerOnEnd then + self:onEnd() + end - local function tick() - while self:isPaused() or self:getTimeLeft('ms') > 0 do - Wait(0) - end + self.private.triggerOnEnd = true +end - if self.private.triggerOnEnd then - self:onEnd() - end +function timer:start(async) + if self.private.startTime > 0 then error('Cannot start a timer that is already running') end - self.private.triggerOnEnd = true - end + self.private.startTime = GetGameTimer() - if not async then return tick() end + if not async then return self:run() end Citizen.CreateThreadNow(function() - tick() + self:run() end) end