class SpaceInvaders::InvaderRow

Constants

X_POSITIONS

Attributes

direction[RW]
invader_clazz[R]

Public Class Methods

new(app, y_position, invader_clazz) click to toggle source
Calls superclass method SpaceInvaders::Base::new
# File lib/space_invaders/invaders/invader_row.rb, line 13
def initialize app, y_position, invader_clazz
  super(app)
  @y_position = y_position
  @direction = :right
  @invader_clazz = invader_clazz
  @invaders = []
  X_POSITIONS.each do |x_position|
    @invaders << invader_clazz.new(app, x_position, y_position)
  end
end

Public Instance Methods

check_collision(bullets) click to toggle source
# File lib/space_invaders/invaders/invader_row.rb, line 42
def check_collision(bullets)
  @invaders.delete_if do |invader|
    if invader.collides_with? bullets
      app.score_tracker.increase_by(invader.points)
      app.sounds.play_invader_hit!
    end
  end
end
draw() click to toggle source
# File lib/space_invaders/invaders/invader_row.rb, line 30
def draw
  @invaders.each {|invader| invader.draw }
end
farmost_left_position() click to toggle source
# File lib/space_invaders/invaders/invader_row.rb, line 38
def farmost_left_position
  @invaders.min_by {|invader| invader.x_position }.x_position
end
farmost_right_position() click to toggle source
# File lib/space_invaders/invaders/invader_row.rb, line 34
def farmost_right_position
  @invaders.max_by {|invader| invader.x_position }.x_position
end
update(direction, y_offset) click to toggle source
# File lib/space_invaders/invaders/invader_row.rb, line 26
def update direction, y_offset
  @invaders.each {|invader| invader.update direction, y_offset }
end