Skip to content

Commit 728d20c

Browse files
committed
fix(timer): re-enable onEnd after stopping a timer
Resolves #667.
1 parent 99fb752 commit 728d20c

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

imports/timer/shared.lua

+15-13
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ function timer:constructor(time, onEnd, async)
3131
self.private.startTime = 0
3232
self.private.paused = false
3333
self.private.onEnd = onEnd
34-
self.private.triggerOnEnd = true
3534

3635
self:start(async)
3736
end
@@ -42,22 +41,22 @@ function timer:start(async)
4241
self.private.startTime = GetGameTimer()
4342

4443
local function tick()
45-
while self:getTimeLeft('ms') > 0 do
46-
while self:isPaused() do
47-
Wait(0)
48-
end
44+
while self:isPaused() or self:getTimeLeft('ms') > 0 do
4945
Wait(0)
5046
end
51-
self:onEnd()
47+
48+
if self.private.triggerOnEnd then
49+
self:onEnd()
50+
end
51+
52+
self.private.triggerOnEnd = true
5253
end
5354

54-
if async then
55-
Citizen.CreateThreadNow(function()
56-
tick()
57-
end)
58-
else
55+
if not async then return tick() end
56+
57+
Citizen.CreateThreadNow(function()
5958
tick()
60-
end
59+
end)
6160
end
6261

6362
function timer:onEnd()
@@ -70,14 +69,17 @@ end
7069

7170
function timer:forceEnd(triggerOnEnd)
7271
if self:getTimeLeft('ms') <= 0 then return end
73-
self.private.triggerOnEnd = triggerOnEnd
72+
7473
self.private.paused = false
7574
self.private.currentTimeLeft = 0
75+
self.private.triggerOnEnd = triggerOnEnd
76+
7677
Wait(0)
7778
end
7879

7980
function timer:pause()
8081
if self.private.paused then return end
82+
8183
self.private.currentTimeLeft = self:getTimeLeft('ms') --[[@as number]]
8284
self.private.paused = true
8385
end

0 commit comments

Comments
 (0)