class TankNavigatingState

Public Class Methods

new(object, vision) click to toggle source
# File lib/entities/components/ai/tank_navigating_state.rb, line 2
def initialize(object, vision)
  @object = object
  @vision = vision
end

Public Instance Methods

change_direction() click to toggle source
# File lib/entities/components/ai/tank_navigating_state.rb, line 12
def change_direction
  closest_free_path = @vision.closest_free_path
  if closest_free_path
    @object.physics.change_direction(
      Utils.angle_between(
        @object.x, @object.y, *closest_free_path))
  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_navigating_state.rb, line 27
def drive_time
  rand(1000..2000)
end
turn_time() click to toggle source
# File lib/entities/components/ai/tank_navigating_state.rb, line 31
def turn_time
  rand(300..1000)
end
update() click to toggle source
# File lib/entities/components/ai/tank_navigating_state.rb, line 7
def update
  change_direction if should_change_direction?
  drive
end
wait_time() click to toggle source
# File lib/entities/components/ai/tank_navigating_state.rb, line 23
def wait_time
  rand(10..100)
end