class DumbProjectile

Constants

ADVANCED_HIT_BOX_DETECTION
AOE
COOLDOWN_DELAY

WARNING THESE CONSTANTS DON'T GET OVERRIDDEN BY SUBCLASSES. NEED GETTER METHODS

DAMAGE
INITIAL_DELAY
MAX_CURSOR_FOLLOW
SPEED_INCREASE_FACTOR
STARTING_SPEED

Attributes

time_alive[RW]
x[RW]
y[RW]

Public Class Methods

new(scale, screen_width, screen_height, object, options = {}) click to toggle source
Calls superclass method GeneralObject::new
# File line-em-up/models/dumb_projectile.rb, line 21
def initialize(scale, screen_width, screen_height, object, options = {})
  options[:relative_object] = object
  @damage_increase = options[:damage_increase] || 1
  # if options[:debug] == true
  #   puts "NEW DUMB PROJECTILE: X- #{object.x}"
  #   puts "NEW DUMB PROJECTILE: y- #{object.y}"
  # end
  super(scale, object.x, object.y, screen_width, screen_height, options)
  @current_speed = self.class.get_max_speed * @scale
end

Protected Class Methods

get_advanced_hit_box_detection() click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 115
def self.get_advanced_hit_box_detection
  self::ADVANCED_HIT_BOX_DETECTION
end
get_aoe() click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 94
def self.get_aoe
  self::AOE
end
get_cooldown_delay() click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 97
def self.get_cooldown_delay
  self::COOLDOWN_DELAY
end
get_damage() click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 91
def self.get_damage
  self::DAMAGE
end
get_initial_delay() click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 106
def self.get_initial_delay
  self::INITIAL_DELAY
end
get_max_cursor_follow() click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 112
def self.get_max_cursor_follow
  self::MAX_CURSOR_FOLLOW
end
get_speed_increase_factor() click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 109
def self.get_speed_increase_factor
  self::SPEED_INCREASE_FACTOR
end
get_starting_speed() click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 100
def self.get_starting_speed
  self::STARTING_SPEED
end

Public Instance Methods

destructable?() click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 45
def destructable?
  false
end
draw_gl() click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 32
def draw_gl
end
get_draw_ordering() click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 41
def get_draw_ordering
  ZOrder::Projectile
end
get_image() click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 16
def get_image
  puts "override get_image!"
  Gosu::Image.new("#{MEDIA_DIRECTORY}/question.png")
end
hit_object(object) click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 49
def hit_object(object)
  return hit_objects([[object]])
end
hit_objects(object_groups) click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 53
def hit_objects(object_groups)
  drops = []
  points = 0
  hit_object = false
  killed = 0
  object_groups.each do |group|
    group.each do |object|
      next if object.nil?
      break if hit_object
      if object.health <= 0
        next
      end
      hit_object = Gosu.distance(@x, @y, object.x, object.y) < self.get_radius + object.get_radius
      if hit_object
        if object.respond_to?(:health) && object.respond_to?(:take_damage)
          object.take_damage(self.class.get_damage * @damage_increase)
        end

        if object.respond_to?(:is_alive) && !object.is_alive && object.respond_to?(:drops)

          object.drops.each do |drop|
            drops << drop
          end
        end

        if object.respond_to?(:is_alive) && !object.is_alive && object.respond_to?(:get_points)
          killed += 1
          points = points + object.get_points
        end
      end
    end
  end
  @y = @off_screen if hit_object
  collision_triggers if hit_object
  return {drops: drops, point_value: points, killed: killed}
end
update(mouse_x = nil, mouse_y = nil, player = nil, scroll_factor = 1) click to toggle source
# File line-em-up/models/dumb_projectile.rb, line 35
def update mouse_x = nil, mouse_y = nil, player = nil, scroll_factor = 1
  @y -= @current_speed * scroll_factor
  @y > 0 && @y < @screen_height
end