Class: Map
- Inherits:
-
Object
- Object
- Map
- Defined in:
- lib/misc/map.rb
Overview
class Map
Instance Attribute Summary collapse
-
#eagle ⇒ Object
readonly
Returns the value of attribute eagle.
Instance Method Summary collapse
- #add_bullet(bullet) ⇒ Object
- #add_enemy ⇒ Object
- #add_explosion(x, y) ⇒ Object
- #add_object(o, list) ⇒ Object
- #draw ⇒ Object
- #game_over? ⇒ Boolean
-
#initialize(two_players = false, level = 1) ⇒ Map
constructor
A new instance of Map.
- #objects ⇒ Object
- #reject_objects ⇒ Object
- #update(keymap) ⇒ Object
- #upgrade_create ⇒ Object
- #upgrade_granade ⇒ Object
- #upgrade_timer ⇒ Object
- #upgrades_size ⇒ Object
Constructor Details
#initialize(two_players = false, level = 1) ⇒ Map
Returns a new instance of Map.
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/misc/map.rb', line 6 def initialize(two_players = false, level = 1) @level = Level.new(level) @env_objects = @level.env_objects @explosions = [] @bullets = [] @upgrades = [] @enemies = [Enemy.new(0, 0, self), Enemy.new(7 * 16, 0, self), Enemy.new(15 * 16, 0, self)] @pl1 = Player.new(@level.spawn1[0], @level.spawn1[1], self) @pl2 = two_players ? Player.new(@level.spawn2[0], @level.spawn2[1], self, true) : nil @eagle = Eagle.new(@level.eagle[0], @level.eagle[1]) @timer = 0 end |
Instance Attribute Details
#eagle ⇒ Object (readonly)
Returns the value of attribute eagle.
5 6 7 |
# File 'lib/misc/map.rb', line 5 def eagle @eagle end |
Instance Method Details
#add_bullet(bullet) ⇒ Object
60 61 62 63 |
# File 'lib/misc/map.rb', line 60 def add_bullet(bullet) return if bullet.nil? add_object(bullet, @bullets) end |
#add_enemy ⇒ Object
55 56 57 58 |
# File 'lib/misc/map.rb', line 55 def add_enemy spawn = @level.enemy_spawn add_object(Enemy.new(spawn[0],spawn[1], self, rand(5) + 1), @enemies) end |
#add_explosion(x, y) ⇒ Object
51 52 53 |
# File 'lib/misc/map.rb', line 51 def add_explosion(x, y) add_object(Explosion.new(x, y), @explosions) end |
#add_object(o, list) ⇒ Object
46 47 48 49 |
# File 'lib/misc/map.rb', line 46 def add_object(o, list) return if list.include?(o) || o.nil? list.push(o) end |
#draw ⇒ Object
31 32 33 |
# File 'lib/misc/map.rb', line 31 def draw objects.map(&:draw) end |
#game_over? ⇒ Boolean
73 74 75 76 77 78 |
# File 'lib/misc/map.rb', line 73 def game_over? over = @eagle.dead? over |= @pl1.done? if @pl2.nil? over |= @pl1.done? && @pl2.done? if @pl2 over end |
#objects ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/misc/map.rb', line 19 def objects obj = @env_objects obj += [@pl1] unless @pl1.done? obj += [@pl2] if @pl2 && !@pl2.done? obj += [@eagle] obj += @upgrades obj += @explosions obj += @bullets obj += @enemies obj end |
#reject_objects ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/misc/map.rb', line 65 def reject_objects @explosions.reject!(&:done?) @bullets.reject!(&:done?) @env_objects.reject!(&:done?) @enemies.reject!(&:done?) @upgrades.reject!(&:done?) end |
#update(keymap) ⇒ Object
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/misc/map.rb', line 35 def update(keymap) add_object(@pl1.input(keymap), @bullets) unless @pl1.done? add_object(@pl2.input(keymap), @bullets) if @pl2 && !@pl2.done? @enemies.map(&:ai) if @timer == 0 objects.map(&:update) reject_objects objects.map { |x| add_object(x.collision_detect(objects), @explosions) } @timer -= 1 if @timer > 0 add_enemy if @enemies.length < 3 end |
#upgrade_create ⇒ Object
80 81 82 |
# File 'lib/misc/map.rb', line 80 def upgrade_create @upgrades.push(Upgrade.new(rand(240), rand(208), [:powerup_timer, :powerup_star, :powerup_granade][rand(3)])) end |
#upgrade_granade ⇒ Object
88 89 90 |
# File 'lib/misc/map.rb', line 88 def upgrade_granade @enemies.each { |e| e.hitted(nil) } end |
#upgrade_timer ⇒ Object
84 85 86 |
# File 'lib/misc/map.rb', line 84 def upgrade_timer @timer = 600 end |
#upgrades_size ⇒ Object
92 93 94 |
# File 'lib/misc/map.rb', line 92 def upgrades_size @upgrades.length end |