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