class TankFightingState

Public Class Methods

new(object, vision) click to toggle source
Calls superclass method TankMotionState::new
# File lib/entities/components/ai/tank_fighting_state.rb, line 2
def initialize(object, vision)
  super
  @object = object
  @vision = vision
end

Public Instance Methods

change_direction() click to toggle source
# File lib/entities/components/ai/tank_fighting_state.rb, line 15
def change_direction
  change = case rand(0..100)
  when 0..20
    -45
  when 20..40
    45
  when 40..60
    90
  when 60..80
    -90
  when 80..90
    135
  when 90..100
    -135
  end
  @object.physics.change_direction(
    @object.direction + change)
  @changed_direction_at = Gosu.milliseconds
  @will_keep_direction_for = turn_time
end
drive_time() click to toggle source
# File lib/entities/components/ai/tank_fighting_state.rb, line 40
def drive_time
  rand(5000..10000)
end
turn_time() click to toggle source
# File lib/entities/components/ai/tank_fighting_state.rb, line 44
def turn_time
  rand(300..3000)
end
update() click to toggle source
# File lib/entities/components/ai/tank_fighting_state.rb, line 8
def update
  change_direction if should_change_direction?
  if substate_expired?
    rand > 0.1 ? drive : wait
  end
end
wait_time() click to toggle source
# File lib/entities/components/ai/tank_fighting_state.rb, line 36
def wait_time
  rand(50..300)
end