timers with string names
This commit is contained in:
+8
-8
@@ -9,27 +9,27 @@ Timer :: struct {
|
||||
}
|
||||
|
||||
@(private)
|
||||
timers: [dynamic]Timer
|
||||
timers: map[string]Timer
|
||||
|
||||
start_timer :: proc(time: f32, signal: string = "") -> int {
|
||||
start_timer :: proc(time: f32, signal: string) -> int {
|
||||
new_timer: Timer
|
||||
new_timer.lifetime = time
|
||||
append(&timers, new_timer)
|
||||
timers[signal] = new_timer
|
||||
return len(timers)
|
||||
}
|
||||
|
||||
get_timer :: proc(index: int) -> Timer {
|
||||
if index <= len(timers) - 1 {
|
||||
return timers[index]
|
||||
get_timer :: proc(signal: string) -> Timer {
|
||||
if timer, exists := timers[signal]; exists {
|
||||
return timers[signal]
|
||||
}
|
||||
return Timer{}
|
||||
}
|
||||
|
||||
run_timers :: proc() {
|
||||
for &t, i in timers {
|
||||
for i, &t in timers {
|
||||
t.lifetime -= rl.GetFrameTime()
|
||||
if t.lifetime <= 0 {
|
||||
unordered_remove(&timers, i)
|
||||
timers[i] = Timer{}
|
||||
if t.signal != "" {
|
||||
write(t.signal)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user