You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
564 B
CoffeeScript
30 lines
564 B
CoffeeScript
10 years ago
|
Engine::timing =
|
||
|
startTimer: (frames, callback, name = null, repeat = false) =>
|
||
|
timer = new Timer(frames, callback, repeat)
|
||
|
if name?
|
||
|
@named_timers[name] = timer
|
||
|
else
|
||
|
@unnamed_timers.push(timer)
|
||
|
|
||
|
stopTimer: (name)
|
||
|
@timers[name].stop()
|
||
|
|
||
|
class Timer
|
||
|
constructor: (@frames, @callback, @repeat) =>
|
||
|
@current_frame = 0
|
||
|
@finished = false
|
||
|
|
||
|
step: =>
|
||
|
if @current_frame >= @frames
|
||
|
@callback()
|
||
|
|
||
|
if repeat
|
||
|
@current_frame = 0
|
||
|
else
|
||
|
@finished = true
|
||
|
|
||
|
skip: (frames) =>
|
||
|
@current_frame += frames
|
||
|
|
||
|
stop: =>
|
||
|
@finished = true
|