diff --git a/src/timer.odin b/src/timer.odin index 72869ee..05ebd0e 100644 --- a/src/timer.odin +++ b/src/timer.odin @@ -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) }