Class: Kamisama::RespawnLimiter

Inherits:
Object
  • Object
show all
Defined in:
lib/kamisama/respawn_limiter.rb

Instance Method Summary collapse

Constructor Details

#initialize(respawn_limit, respawn_interval) ⇒ RespawnLimiter

Returns a new instance of RespawnLimiter.



3
4
5
6
7
8
# File 'lib/kamisama/respawn_limiter.rb', line 3

def initialize(respawn_limit, respawn_interval)
  @respawn_limit = respawn_limit
  @respawn_interval = respawn_interval

  @respawns = []
end

Instance Method Details

#calculate_respawn_countObject



18
19
20
21
22
# File 'lib/kamisama/respawn_limiter.rb', line 18

def calculate_respawn_count
  now = Time.now.to_i

  @respawns.count { |timestamp| timestamp > (now - @respawn_interval) }
end

#die_if_breached!Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/kamisama/respawn_limiter.rb', line 24

def die_if_breached!
  respawn_count = calculate_respawn_count

  if respawn_count >= @respawn_limit
    puts "[Kamisama Master] Respawn count #{respawn_count} hit the limit of #{@respawn_limit} for the respawn interval of #{@respawn_interval} seconds."
    puts "[Kamisama Master] Terminating."

    exit(1)
  end
end

#record!Object



10
11
12
13
14
15
16
# File 'lib/kamisama/respawn_limiter.rb', line 10

def record!
  now = Time.now.to_i

  @respawns = @respawns.select { |timestamp| timestamp >= now - @respawn_interval } + [now]

  die_if_breached!
end