Class: Bestguigui::Timer

Inherits:
Object
  • Object
show all
Defined in:
lib/bestguigui/timer.rb

Overview

Cooldown/minuteur basé sur dt — remplace le pattern Gosu.milliseconds - @tick >= @cooldown qu'on retrouve dans quasi chaque jam (tir, invulnérabilité après un coup, etc).

@fire_cooldown = Bestguigui::Timer.new(0.6) # 600ms

def update(dt)
@fire_cooldown.update(dt)
end

def button_down(id)
fire if id == ... && @fire_cooldown.trigger!
end

start_ready: true le rend utilisable dès la création (sinon il faut attendre duration avant le premier #ready?).

Instance Method Summary collapse

Constructor Details

#initialize(duration, start_ready: false) ⇒ Timer

Returns a new instance of Timer.



19
20
21
22
# File 'lib/bestguigui/timer.rb', line 19

def initialize(duration, start_ready: false)
  @duration = duration
  @elapsed = start_ready ? duration : 0
end

Instance Method Details

#ready?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/bestguigui/timer.rb', line 28

def ready?
  @elapsed >= @duration
end

#reset!Object



32
33
34
# File 'lib/bestguigui/timer.rb', line 32

def reset!
  @elapsed = 0
end

#trigger!Object

Si prêt : remet à zéro et renvoie true. Sinon renvoie false. Pratique pour déclencher une action en une seule expression.



38
39
40
41
42
43
# File 'lib/bestguigui/timer.rb', line 38

def trigger!
  return false unless ready?

  reset!
  true
end

#update(dt) ⇒ Object



24
25
26
# File 'lib/bestguigui/timer.rb', line 24

def update(dt)
  @elapsed += dt
end