class TankFleeingState
Constants
- MAX_FLEE_TIME
Public Class Methods
new(object, vision, gun)
click to toggle source
Calls superclass method
TankMotionState::new
# File lib/entities/components/ai/tank_fleeing_state.rb, line 4 def initialize(object, vision, gun) super(object, vision) @object = object @vision = vision @gun = gun end
Public Instance Methods
can_flee?()
click to toggle source
# File lib/entities/components/ai/tank_fleeing_state.rb, line 11 def can_flee? return true unless @started_fleeing Gosu.milliseconds - @started_fleeing < MAX_FLEE_TIME end
change_direction()
click to toggle source
# File lib/entities/components/ai/tank_fleeing_state.rb, line 25 def change_direction closest_powerup = @vision.closest_powerup( RepairPowerup, HealthPowerup) if closest_powerup angle = Utils.angle_between( @object.x, @object.y, closest_powerup.x, closest_powerup.y) @object.physics.change_direction( angle - angle % 45) else @object.physics.change_direction( 180 + @gun.desired_gun_angle - @gun.desired_gun_angle % 45) end @changed_direction_at = Gosu.milliseconds @will_keep_direction_for = turn_time end
drive_time()
click to toggle source
# File lib/entities/components/ai/tank_fleeing_state.rb, line 43 def drive_time 10000 end
enter()
click to toggle source
# File lib/entities/components/ai/tank_fleeing_state.rb, line 16 def enter @started_fleeing ||= Gosu.milliseconds end
turn_time()
click to toggle source
# File lib/entities/components/ai/tank_fleeing_state.rb, line 47 def turn_time rand(300..600) end
update()
click to toggle source
# File lib/entities/components/ai/tank_fleeing_state.rb, line 20 def update change_direction if should_change_direction? drive end