This repository has been archived by the owner on Jan 1, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathflxtimer.monkey
108 lines (75 loc) · 1.83 KB
/
flxtimer.monkey
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
Strict
Import reflection
Import flxextern
Import flxg
Import plugin.timermanager
Class FlxTimer
Field time:Float
Field loops:Int
Field paused:Bool
Field finished:Bool
Private
Field _callback:FlxTimerListener
Field _timeCounter:Float
Field _loopsCounter:Int
Public
Method New()
time = 0
loops = 0
_callback = Null
_timeCounter = 0
_loopsCounter = 0
paused = False
finished = False
End Method
Method Destroy:Void()
Stop()
_callback = Null
End Method
Method Update:Void()
_timeCounter += FlxG.Elapsed
While (_timeCounter >= time And Not paused And Not finished)
_timeCounter -= time
_loopsCounter += 1
If (loops > 0 And _loopsCounter >= loops) Stop()
If (_callback <> Null) _callback.OnTimerTick(Self)
Wend
End Method
Method Start:FlxTimer(time:Float = 1, loops:Int = 1, callback:FlxTimerListener = Null)
Local timerManager:TimerManager = Manager()
If (timerManager <> Null) timerManager.Add(Self)
If (paused) Then
paused = False
Return Self
End If
paused = False
finished = False
Self.time = time
Self.loops = loops
_callback = callback
_timeCounter = 0
_loopsCounter = 0
Return Self
End Method
Method Stop:Void()
finished = True
Local timerManger:TimerManager = FlxTimer.Manager()
If (timerManger <> Null) timerManger.Remove(Self)
End Method
Method TimeLeft:Float() Property
Return time - _timeCounter
End Method
Method LoopsLeft:Int() Property
Return loops - _loopsCounter
End Method
Method Progress:Float() Property
If (time > 0) Return _timeCounter/time
Return .0
End Method
Function Manager:TimerManager()
Return TimerManager(FlxG.GetPlugin(TimerManager.__CLASS__))
End Function
End Class
Interface FlxTimerListener
Method OnTimerTick:Void(timer:FlxTimer)
End Interface