class Explosion

Public Class Methods

new(object_pool, x, y, source) click to toggle source
Calls superclass method GameObject::new
# File lib/entities/explosion.rb, line 3
def initialize(object_pool, x, y, source)
  super(object_pool, x, y)
  @source = source
  @object_pool = object_pool
  if @object_pool.map.can_move_to?(x, y)
    Damage.new(@object_pool, x, y)
  end
  ExplosionGraphics.new(self)
  ExplosionSounds.play(self, object_pool.camera)
  inflict_damage
end

Public Instance Methods

effect?() click to toggle source
# File lib/entities/explosion.rb, line 15
def effect?
  true
end
mark_for_removal() click to toggle source
Calls superclass method GameObject#mark_for_removal
# File lib/entities/explosion.rb, line 19
def mark_for_removal
  super
end

Private Instance Methods

inflict_damage() click to toggle source
# File lib/entities/explosion.rb, line 25
def inflict_damage
  object_pool.nearby(self, 100).each do |obj|
    if obj.respond_to?(:health)
      obj.health.inflict_damage(
        Math.sqrt(3 * 100 - Utils.distance_between(
            obj.x, obj.y, @x, @y)), @source)
    end
  end
end