Class: Map

Inherits:
Object
  • Object
show all
Defined in:
lib/misc/map.rb

Overview

class Map

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#eagleObject (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_enemyObject



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

#drawObject



31
32
33
# File 'lib/misc/map.rb', line 31

def draw
  objects.map(&:draw)
end

#game_over?Boolean

Returns:

  • (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

#objectsObject



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_objectsObject



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_createObject



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_granadeObject



88
89
90
# File 'lib/misc/map.rb', line 88

def upgrade_granade
  @enemies.each { |e| e.hitted(nil) }
end

#upgrade_timerObject



84
85
86
# File 'lib/misc/map.rb', line 84

def upgrade_timer
  @timer = 600
end

#upgrades_sizeObject



92
93
94
# File 'lib/misc/map.rb', line 92

def upgrades_size
  @upgrades.length
end