Class: RoadToRubykaigi::Sprite::Enemies
- Inherits:
-
Object
- Object
- RoadToRubykaigi::Sprite::Enemies
- Extended by:
- Forwardable
- Defined in:
- lib/road_to_rubykaigi/sprite/enemy.rb
Constant Summary collapse
- ENEMIES_DATA =
{ FixedPatrol: [ { x: 55, y: 6, left_bound: 0, right_bound: 0, speed: 0, character: :ladybug }, { x: 125, y: 8, left_bound: 0, right_bound: 0, speed: 0, character: :ladybug }, { x: 293, y: 23, left_bound: 0, right_bound: 0, speed: 0, character: :spider }, ], HorizontalPatrol: [ { x: 123, y: 26, left_bound: 114, right_bound: 123, speed: 1.5, character: :bee }, { x: 171, y: 26, left_bound: 162, right_bound: 171, speed: 1.5, character: :bee }, { x: 278, y: 15, left_bound: 270, right_bound: 278, speed: 1.5, character: :bug }, { x: 291, y: 15, left_bound: 283, right_bound: 291, speed: 1.5, character: :bug }, { x: 302, y: 15, left_bound: 297, right_bound: 302, speed: 1.5, character: :bug }, ], ScreenEntryPatrol: [ { x: 63, y: 27, left_bound: 0, right_bound: 63, speed: 4.0, character: :bug }, { x: 76, y: 27, left_bound: 0, right_bound: 76, speed: 4.0, character: :bug }, { x: 87, y: 27, left_bound: 0, right_bound: 76, speed: 4.0, character: :bug }, { x: 221, y: 23, left_bound: 0, right_bound: 151, speed: 6.0, character: :bee }, { x: 240, y: 19, left_bound: 0, right_bound: 170, speed: 6.0, character: :bee }, { x: 256, y: 16, left_bound: 0, right_bound: 186, speed: 6.0, character: :bee }, ], }
Instance Method Summary collapse
Instance Method Details
#activate ⇒ Object
58 59 60 |
# File 'lib/road_to_rubykaigi/sprite/enemy.rb', line 58 def activate @waiting = false end |
#build_buffer(offset_x:) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/road_to_rubykaigi/sprite/enemy.rb', line 31 def build_buffer(offset_x:) buffer = Array.new(Map::VIEWPORT_HEIGHT) { Array.new(Map::VIEWPORT_WIDTH) { "" } } @enemies.each do |enemy| bounding_box = enemy.bounding_box relative_x = bounding_box[:x] - offset_x - 1 relative_y = bounding_box[:y] - 1 next if relative_x < 1 enemy.characters.each_with_index do |character, j| next if relative_x + j >= Map::VIEWPORT_WIDTH - 1 buffer[relative_y][relative_x+j] = character end end buffer end |
#simulate_physics ⇒ Object
46 47 48 49 50 |
# File 'lib/road_to_rubykaigi/sprite/enemy.rb', line 46 def simulate_physics if activated? @enemies.each(&:move) end end |
#update ⇒ Object
52 53 54 55 56 |
# File 'lib/road_to_rubykaigi/sprite/enemy.rb', line 52 def update unless activated? @enemies.each(&:reset_last_update_time) end end |