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