line-em-up 0.3.4 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6109fa27ad9125cbe58e1a61d375c47e3a61ad1e
4
- data.tar.gz: a4e33db616b81d153bb476a7a1f54876337e7e76
3
+ metadata.gz: d9421cc61562776406fdb6434aefa629abe793a3
4
+ data.tar.gz: 4958a21d527c866522676a7f346b6735fc33ae2e
5
5
  SHA512:
6
- metadata.gz: ba3d435f9e14491eadd9168b75fcbe6f49f5460538c8bb68436ecac937ae37f69fb1b61ba8cf88a6af0e7f1e50a93f7ce7ad565cec74c08e2c91a2372e6fd25c
7
- data.tar.gz: beb518bb4619e4fe7217b59c0eb3240bbdaf3aedad40b7b1514e12c5cd7b498dab76ed4a8ce59a60dc684ae51e48434324e76ba0a977bd146532c07ab4ec715c
6
+ metadata.gz: ea9e7e14ff9596ed5000a2c1a0ed08c5a4b1c152a74f7c6c63ce408db376252f2289459a203265215de674ce6f807a919073f6910f7afefd0f100d3a8177fc2e
7
+ data.tar.gz: 708c5fd5be3f031830ec85d22bfc28761144b4228112313d9e9a8af6da39c347b99672e384ebc4251d5430aa60902c01f870ca99fb54c77a744947cc59ac2c00
@@ -0,0 +1,40 @@
1
+ require 'ostruct'
2
+ require_relative 'projectile.rb'
3
+
4
+ class Bomb < Projectile
5
+ COOLDOWN_DELAY = 50
6
+ MAX_SPEED = 5
7
+ STARTING_SPEED = 3.0
8
+ INITIAL_DELAY = 0
9
+ SPEED_INCREASE_FACTOR = 0.0
10
+ DAMAGE = 100
11
+ AOE = 150
12
+
13
+ MAX_CURSOR_FOLLOW = 4
14
+
15
+ def get_image
16
+ Gosu::Image.new("#{MEDIA_DIRECTORY}/bomb.png")
17
+ end
18
+
19
+ def draw
20
+ # @image.draw(@x, @y, ZOrder::Projectile, scale_x = 1, scale_y = 1, color = 0xff_ffffff, mode = :default)
21
+ # @image.draw(@x, @y, ZOrder::Projectile, scale_x = 1, scale_y = 1, color = 0xff_ffffff, mode = :default)
22
+ # draw_rot(x, y, z, angle, center_x = 0.5, center_y = 0.5, scale_x = 1, scale_y = 1, color = 0xff_ffffff, mode = :default) ⇒ void
23
+ # @image.draw_rot(@x, @y, ZOrder::Projectile, @y, 0.5, 0.5, scale, scale)
24
+ return draw_rot()
25
+ end
26
+
27
+
28
+ def update width, height, mouse_x = nil, mouse_y = nil, player = nil
29
+ vx = (self.class.get_starting_speed * @scale) * Math.cos(@angle * Math::PI / 180)
30
+
31
+ vy = (self.class.get_starting_speed * @scale) * Math.sin(@angle * Math::PI / 180)
32
+ # Because our y is inverted
33
+ vy = vy * -1
34
+
35
+ @x = @x + vx
36
+ @y = @y + vy
37
+
38
+ super(width, height, mouse_x, mouse_y)
39
+ end
40
+ end
@@ -0,0 +1,17 @@
1
+ require_relative 'pickup.rb'
2
+
3
+ class BombPack < Pickup
4
+ def get_image
5
+ Gosu::Image.new("#{MEDIA_DIRECTORY}/bomb_pack.png", :tileable => true)
6
+ end
7
+
8
+ def draw
9
+ # @image.draw_rot(@x, @y, ZOrder::Pickups, @y, 0.5, 0.5, 1, 1)
10
+ draw_rot()
11
+ end
12
+
13
+ def collected_by_player player
14
+ player.bombs += 3
15
+ end
16
+
17
+ end
@@ -0,0 +1,60 @@
1
+ require_relative 'general_object.rb'
2
+
3
+ class Building < GeneralObject
4
+ POINT_VALUE_BASE = 1
5
+ attr_accessor :health, :armor, :x, :y
6
+
7
+ def initialize(scale, x = nil, y = nil)
8
+ @scale = scale
9
+ # image = Magick::Image::read("#{MEDIA_DIRECTORY}/building.png").first.resize(0.3)
10
+ # @image = Gosu::Image.new(image, :tileable => true)
11
+ @image = Gosu::Image.new("#{MEDIA_DIRECTORY}/building.png")
12
+ @image_width = @image.width * @scale
13
+ @image_height = @image.height * @scale
14
+ @image_size = @image_width * @image_height / 2
15
+ @image_radius = (@image_width + @image_height) / 4
16
+ @x = rand * 800
17
+ @y = 0 - get_height
18
+ # puts "NEW BUILDING: #{@x} and #{@y}"
19
+ @health = 15
20
+ @armor = 0
21
+ @current_speed = (GLBackground::SCROLLING_SPEED * @scale)
22
+ end
23
+
24
+ def get_points
25
+ return POINT_VALUE_BASE
26
+ end
27
+
28
+ def is_alive
29
+ @health > 0
30
+ end
31
+
32
+ def take_damage damage
33
+ @health -= damage
34
+ end
35
+
36
+ def drops
37
+ rand_num = rand(10)
38
+ if rand(10) == 9
39
+ [HealthPack.new(@scale, @x, @y)]
40
+ elsif rand(10) == 8
41
+ [BombPack.new(@scale, @x, @y)]
42
+ else
43
+ [MissilePack.new(@scale, @x, @y)]
44
+ end
45
+ end
46
+
47
+ def get_draw_ordering
48
+ ZOrder::Building
49
+ end
50
+
51
+
52
+ def update width, height, mouse_x = nil, mouse_y = nil, player = nil
53
+ if is_alive
54
+ @y += @current_speed
55
+ @y < height + get_height
56
+ else
57
+ false
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,43 @@
1
+ require_relative 'projectile.rb'
2
+
3
+ class Bullet < Projectile
4
+ DAMAGE = 5
5
+ COOLDOWN_DELAY = 30
6
+ MAX_SPEED = 5
7
+
8
+ def get_image
9
+ Gosu::Image.new("#{MEDIA_DIRECTORY}/bullet-mini.png")
10
+ end
11
+
12
+ def initialize(scale, width, height, object, mouse_x = nil, mouse_y = nil, options = {})
13
+ @scale = scale
14
+ @time_alive = 0
15
+ @image = get_image
16
+ # @color = Gosu::Color.new(0xff_000000)
17
+ # @color.red = rand(255 - 40) + 40
18
+ # @color.green = rand(255 - 40) + 40
19
+ # @color.blue = rand(255 - 40) + 40
20
+ if LEFT == options[:side]
21
+ @x = object.x - (object.get_width / 2)
22
+ @y = object.y# - player.get_height
23
+ elsif RIGHT == options[:side]
24
+ @x = (object.x + object.get_width / 2) - 4
25
+ @y = object.y# - player.get_height
26
+ else
27
+ @x = object.x
28
+ @y = object.y
29
+ end
30
+ @image_width = @image.width * @scale
31
+ @image_height = @image.height * @scale
32
+ @image_size = @image_width * @image_height / 2
33
+ @image_radius = (@image_width + @image_height) / 4
34
+ @current_speed = self.class.get_max_speed * @scale
35
+ end
36
+
37
+ def update width, height, mouse_x = nil, mouse_y = nil, player = nil
38
+ @y -= @current_speed
39
+ # Return false when out of screen (gets deleted then)
40
+ @y > 0 && @y < height
41
+ # super(mouse_x, mouse_y)
42
+ end
43
+ end
@@ -0,0 +1,25 @@
1
+ require_relative 'general_object.rb'
2
+ class Cursor < GeneralObject
3
+ # attr_reader :img, :visible, :imgObj
4
+
5
+
6
+ def get_image
7
+ Gosu::Image.new("#{MEDIA_DIRECTORY}/crosshair.png")
8
+ end
9
+
10
+
11
+ def initialize scale
12
+ @scale = scale
13
+ @image = get_image
14
+ @image_width = @image.width * @scale
15
+ @image_height = @image.height * @scale
16
+ @image_size = @image_width * @image_height / 2
17
+ @image_radius = (@image_width + @image_height) / 4
18
+ end
19
+
20
+
21
+ def draw mouse_x, mouse_y
22
+ @image.draw(mouse_x - get_width / 2, mouse_y - get_height / 2, ZOrder::Cursor, @scale, @scale)
23
+ end
24
+
25
+ end
@@ -0,0 +1,40 @@
1
+ require 'ostruct'
2
+ require_relative 'projectile.rb'
3
+
4
+ class EnemyBomb < Projectile
5
+ COOLDOWN_DELAY = 50
6
+ MAX_SPEED = 5
7
+ STARTING_SPEED = 3.0
8
+ INITIAL_DELAY = 0
9
+ SPEED_INCREASE_FACTOR = 0.0
10
+ DAMAGE = 20
11
+ AOE = 0
12
+
13
+ MAX_CURSOR_FOLLOW = 4
14
+
15
+ def get_image
16
+ Gosu::Image.new("#{MEDIA_DIRECTORY}/bomb.png")
17
+ end
18
+
19
+ def draw
20
+ # @image.draw(@x, @y, ZOrder::Projectile, scale_x = 1, scale_y = 1, color = 0xff_ffffff, mode = :default)
21
+ # @image.draw(@x, @y, ZOrder::Projectile, scale_x = 1, scale_y = 1, color = 0xff_ffffff, mode = :default)
22
+ # draw_rot(x, y, z, angle, center_x = 0.5, center_y = 0.5, scale_x = 1, scale_y = 1, color = 0xff_ffffff, mode = :default) ⇒ void
23
+ # @image.draw_rot(@x, @y, ZOrder::Projectile, @y, 0.5, 0.5, scale, scale)
24
+ return draw_rot()
25
+ end
26
+
27
+
28
+ def update width, height, mouse_x = nil, mouse_y = nil, player = nil
29
+ vx = (self.class.get_starting_speed * @scale) * Math.cos(@angle * Math::PI / 180)
30
+
31
+ vy = (self.class.get_starting_speed * @scale) * Math.sin(@angle * Math::PI / 180)
32
+ # Because our y is inverted
33
+ vy = vy * -1
34
+
35
+ @x = @x + vx
36
+ @y = @y + vy
37
+
38
+ super(width, height, mouse_x, mouse_y)
39
+ end
40
+ end
@@ -0,0 +1,43 @@
1
+ require_relative 'projectile.rb'
2
+
3
+ class EnemyBullet < Projectile
4
+ DAMAGE = 5
5
+ COOLDOWN_DELAY = 30
6
+ MAX_SPEED = 5
7
+
8
+ def get_image
9
+ Gosu::Image.new("#{MEDIA_DIRECTORY}/bullet-mini-reverse.png")
10
+ end
11
+
12
+ def initialize(scale, width, height, object, mouse_x = nil, mouse_y = nil, options = {})
13
+ @scale = scale
14
+ @time_alive = 0
15
+ @image = get_image
16
+ # @color = Gosu::Color.new(0xff_000000)
17
+ # @color.red = rand(255 - 40) + 40
18
+ # @color.green = rand(255 - 40) + 40
19
+ # @color.blue = rand(255 - 40) + 40
20
+ if LEFT == options[:side]
21
+ @x = object.x - (object.get_width / 2)
22
+ @y = object.y# - player.get_height
23
+ elsif RIGHT == options[:side]
24
+ @x = (object.x + object.get_width / 2) - 4
25
+ @y = object.y# - player.get_height
26
+ else
27
+ @x = object.x
28
+ @y = object.y
29
+ end
30
+ @image_width = @image.width * @scale
31
+ @image_height = @image.height * @scale
32
+ @image_size = @image_width * @image_height / 2
33
+ @image_radius = (@image_width + @image_height) / 4
34
+ @current_speed = self.class.get_max_speed * @scale
35
+ end
36
+
37
+ def update width, height, mouse_x = nil, mouse_y = nil, player = nil
38
+ @y += @current_speed
39
+ # Return false when out of screen (gets deleted then)
40
+ @y > 0 && @y < height
41
+ # super(mouse_x, mouse_y)
42
+ end
43
+ end
@@ -0,0 +1,103 @@
1
+ require_relative 'projectile.rb'
2
+ class EnemyHomingMissile < Projectile
3
+ attr_reader :x, :y, :time_alive, :mouse_start_x, :mouse_start_y, :health
4
+ COOLDOWN_DELAY = 75
5
+ MAX_SPEED = 18
6
+ STARTING_SPEED = 0.0
7
+ INITIAL_DELAY = 2
8
+ SPEED_INCREASE_FACTOR = 0.5
9
+ DAMAGE = 15
10
+ AOE = 0
11
+
12
+ MAX_CURSOR_FOLLOW = 4
13
+ # ADVANCED_HIT_BOX_DETECTION = true
14
+ ADVANCED_HIT_BOX_DETECTION = false
15
+
16
+ def initialize(scale, width, height, object, mouse_x = nil, mouse_y = nil, homing_object = nil, options = {})
17
+ @scale = scale
18
+ @image = get_image
19
+ @time_alive = 0
20
+ @health = 5
21
+ # @mouse_start_x = mouse_x
22
+ # @mouse_start_y = mouse_y
23
+
24
+ if LEFT == options[:side]
25
+ @x = object.x - (object.get_width / 2)
26
+ @y = object.y
27
+ elsif RIGHT == options[:side]
28
+ @x = (object.x + object.get_width / 2) - 4
29
+ @y = object.y
30
+ else
31
+ @x = object.x
32
+ @y = object.y
33
+ end
34
+
35
+ if homing_object && homing_object.is_alive
36
+
37
+ start_point = OpenStruct.new(:x => @x - width / 2, :y => @y - height / 2)
38
+ # start_point = GeoPoint.new(@x - WIDTH / 2, @y - HEIGHT / 2)
39
+ # end_point = OpenStruct.new(:x => @mouse_start_x, :y => @mouse_start_y)
40
+ end_point = OpenStruct.new(:x => homing_object.x - width / 2, :y => homing_object.y - height / 2)
41
+ # end_point = GeoPoint.new(@mouse_start_x - WIDTH / 2, @mouse_start_y - HEIGHT / 2)
42
+ @angle = calc_angle(start_point, end_point)
43
+ @radian = calc_radian(start_point, end_point)
44
+
45
+
46
+ if @angle < 0
47
+ @angle = 360 - @angle.abs
48
+ end
49
+ else
50
+ @angle = 280.0
51
+ end
52
+ @image_width = @image.width * @scale
53
+ @image_height = @image.height * @scale
54
+ @image_size = @image_width * @image_height / 2
55
+ @image_radius = (@image_width + @image_height) / 4
56
+ end
57
+
58
+ def destructable?
59
+ true
60
+ end
61
+
62
+ def is_alive
63
+ @health > 0
64
+ end
65
+
66
+
67
+ def take_damage damage
68
+ @health -= damage
69
+ end
70
+
71
+ def get_image
72
+ Gosu::Image.new("#{MEDIA_DIRECTORY}/mini_missile_reverse.png")
73
+ end
74
+
75
+ def update width, height, mouse_x = nil, mouse_y = nil, player = nil
76
+ if is_alive
77
+ new_speed = 0
78
+ if @time_alive > self.class.get_initial_delay
79
+ new_speed = self.class.get_starting_speed + (self.class.get_speed_increase_factor > 0 ? @time_alive * self.class.get_speed_increase_factor : 0)
80
+ new_speed = self.class.get_max_speed if new_speed > self.class.get_max_speed
81
+ new_speed = new_speed * @scale
82
+ end
83
+
84
+ vx = 0
85
+ vy = 0
86
+ if new_speed > 0
87
+ vx = ((new_speed / 3)) * Math.cos(@angle * Math::PI / 180)
88
+
89
+ vy = ((new_speed / 3)) * Math.sin(@angle * Math::PI / 180)
90
+ vy = vy * -1
91
+ # Because our y is inverted
92
+ vy = vy - ((new_speed / 3) * 2)
93
+ end
94
+
95
+ @x = @x + vx
96
+ @y = @y - vy
97
+
98
+ super(width, height, mouse_x, mouse_y)
99
+ else
100
+ false
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,105 @@
1
+ require_relative 'player.rb'
2
+ require_relative 'enemy_bullet.rb'
3
+ require_relative 'small_explosion.rb'
4
+ require_relative 'star.rb'
5
+
6
+ class EnemyPlayer < GeneralObject
7
+ Speed = 3
8
+ MAX_ATTACK_SPEED = 3.0
9
+ POINT_VALUE_BASE = 10
10
+ attr_accessor :cooldown_wait, :attack_speed, :health, :armor, :x, :y
11
+
12
+ def initialize(scale, width, height, x = nil, y = nil)
13
+ @scale = scale
14
+ # image = Magick::Image::read("#{MEDIA_DIRECTORY}/starfighterv4.png").first
15
+ # @image = Gosu::Image.new(image, :tileable => true)
16
+ # @image = Gosu::Image.new("#{MEDIA_DIRECTORY}/starfighterv4.png")
17
+ @image = Gosu::Image.new("#{MEDIA_DIRECTORY}/airship1_color1_reverse.png")
18
+ # @beep = Gosu::Sample.new("#{MEDIA_DIRECTORY}/beep.wav")
19
+ @x = x || rand(width)
20
+ @y = y || 0
21
+ @cooldown_wait = 0
22
+ @attack_speed = 0.5
23
+ @health = 15
24
+ @armor = 0
25
+ @image_width = @image.width * @scale
26
+ @image_height = @image.height * @scale
27
+ @image_size = @image_width * @image_height / 2
28
+ @image_radius = (@image_width + @image_height) / 4
29
+ @current_speed = (rand(5) * @scale).round + 1
30
+ end
31
+
32
+ def get_points
33
+ return POINT_VALUE_BASE
34
+ end
35
+
36
+ def is_alive
37
+ @health > 0
38
+ end
39
+
40
+
41
+ def take_damage damage
42
+ @health -= damage
43
+ end
44
+
45
+ def attack width, height, player
46
+ return {
47
+ projectiles: [EnemyBullet.new(@scale, width, height, self)],
48
+ cooldown: EnemyBullet::COOLDOWN_DELAY
49
+ }
50
+ end
51
+
52
+
53
+ def drops
54
+ [
55
+ SmallExplosion.new(@scale, @x, @y, @image),
56
+ Star.new(@scale, @x, @y)
57
+ ]
58
+ end
59
+
60
+ def get_draw_ordering
61
+ ZOrder::Enemy
62
+ end
63
+
64
+ # def draw
65
+ # @image.draw(@x - get_width / 2, @y - get_height / 2, ZOrder::Enemy)
66
+ # end
67
+
68
+ # SPEED = 1
69
+ def get_speed
70
+ @current_speed
71
+ end
72
+
73
+ def update width, height, mouse_x = nil, mouse_y = nil, player = nil
74
+ @cooldown_wait -= 1 if @cooldown_wait > 0
75
+ if is_alive
76
+ # Stay above the player
77
+ if player.y < @y
78
+ @y -= get_speed
79
+ else
80
+ if rand(2).even?
81
+ @y += get_speed
82
+
83
+ @y = height / 2 if @y > height / 2
84
+ else
85
+ @y -= get_speed
86
+
87
+ @y = 0 + (get_height / 2) if @y < 0 + (get_height / 2)
88
+ end
89
+ end
90
+ if rand(2).even?
91
+ @x += get_speed
92
+ @x = width if @x > width
93
+ else
94
+ @x -= get_speed
95
+ @x = 0 + (get_width / 2) if @x < 0 + (get_width / 2)
96
+ end
97
+
98
+
99
+ @y < height + (get_height / 2)
100
+ else
101
+ false
102
+ end
103
+ end
104
+
105
+ end
@@ -0,0 +1,164 @@
1
+ require_relative 'general_object.rb'
2
+
3
+ class FooterBar < GeneralObject
4
+ attr_reader :x, :y, :living_time
5
+
6
+ def initialize(scale, screen_width = nil, screen_height = nil, image = nil)
7
+ @scale = scale * 0.7
8
+ padding = 10 * @scale
9
+ @health_100 = Gosu::Image.new("#{MEDIA_DIRECTORY}/health_bar_0.png")
10
+ @health_90 = Gosu::Image.new("#{MEDIA_DIRECTORY}/health_bar_1.png")
11
+ @health_80 = Gosu::Image.new("#{MEDIA_DIRECTORY}/health_bar_2.png")
12
+ @health_70 = Gosu::Image.new("#{MEDIA_DIRECTORY}/health_bar_3.png")
13
+ @health_60 = Gosu::Image.new("#{MEDIA_DIRECTORY}/health_bar_4.png")
14
+ @health_50 = Gosu::Image.new("#{MEDIA_DIRECTORY}/health_bar_5.png")
15
+ @health_40 = Gosu::Image.new("#{MEDIA_DIRECTORY}/health_bar_6.png")
16
+ @health_30 = Gosu::Image.new("#{MEDIA_DIRECTORY}/health_bar_7.png")
17
+ @health_20 = Gosu::Image.new("#{MEDIA_DIRECTORY}/health_bar_8.png")
18
+ @health_10 = Gosu::Image.new("#{MEDIA_DIRECTORY}/health_bar_9.png")
19
+ @health_00 = Gosu::Image.new("#{MEDIA_DIRECTORY}/health_bar_10.png")
20
+
21
+
22
+ @green_health_100 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_0.png")
23
+ @green_health_90 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_1.png")
24
+ @green_health_80 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_2.png")
25
+ @green_health_70 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_3.png")
26
+ @green_health_60 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_4.png")
27
+ @green_health_50 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_5.png")
28
+ @green_health_40 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_6.png")
29
+ @green_health_30 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_7.png")
30
+ @green_health_20 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_8.png")
31
+ @green_health_10 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_9.png")
32
+
33
+ @bomb_hud = Gosu::Image.new("#{MEDIA_DIRECTORY}/bomb_pack_hud.png")
34
+ @missile_hud = Gosu::Image.new("#{MEDIA_DIRECTORY}/missile_pack_hud.png")
35
+
36
+
37
+ # @time_alive = 0
38
+ # @image_width = @image.width * @scale
39
+ # @image_height = @image.height * @scale
40
+ # @image_size = @image_width * @image_height / 2
41
+ # @image_radius = (@image_width + @image_height) / 4
42
+ # @current_speed = (SCROLLING_SPEED - 1) * @scale
43
+ @health = 0
44
+
45
+ @health_bar_width = (@health_100.width * @scale)
46
+ @health_bar_height = (@health_100.height * @scale)
47
+
48
+
49
+ # @image_width_half =
50
+ # @image_height_half =
51
+ @health_bar_x = screen_width - @health_bar_width - padding
52
+ @health_bar_y = screen_height- @health_bar_height - padding
53
+
54
+ @bomb_hud_width = (@bomb_hud.width * @scale)
55
+ @bomb_hud_height = (@bomb_hud.height * @scale)
56
+ @bomb_hud_width_half = @bomb_hud_width / 2
57
+ @bomb_hud_height_half = @bomb_hud_height /2
58
+
59
+ @bomb_hud_x = screen_width - @health_bar_width - padding - @bomb_hud_width - padding
60
+ @bomb_hud_y = screen_height - @bomb_hud_height - padding
61
+
62
+ @missile_hud_width = (@missile_hud.width * @scale)
63
+ @missile_hud_height = (@missile_hud.height * @scale)
64
+ @missile_hud_width_half = @missile_hud_width / 2
65
+ @missile_hud_height_half = @missile_hud_height /2
66
+
67
+ @missile_hud_x = screen_width - @health_bar_width - padding - @bomb_hud_width - padding - @missile_hud_width - padding
68
+ @missile_hud_y = screen_height - @missile_hud_height - padding
69
+
70
+ @font = Gosu::Font.new(20)
71
+ @red_color = Gosu::Color.new(0xff_000000)
72
+ @red_color.red = 255
73
+ @black_color = Gosu::Color.new(0xff_000000)
74
+ @black_color.red = 0
75
+ @black_color.green = 0
76
+ @black_color.blue = 0
77
+ @current_color = Gosu::Color.new(0xff_000000)
78
+ @current_color.red = 51
79
+ @current_color.green = 204
80
+ @current_color.blue = 51
81
+ # rgb(51, 204, 51)
82
+ end
83
+
84
+ def get_draw_ordering
85
+ ZOrder::UI
86
+ end
87
+
88
+ def draw player
89
+ health_level = player.health
90
+ if health_level >= 200
91
+ health_image = @green_health_100
92
+ elsif health_level >= 190
93
+ health_image = @green_health_90
94
+ elsif health_level >= 180
95
+ health_image = @green_health_80
96
+ elsif health_level >= 170
97
+ health_image = @green_health_70
98
+ elsif health_level >= 160
99
+ health_image = @green_health_60
100
+ elsif health_level >= 150
101
+ health_image = @green_health_50
102
+ elsif health_level >= 140
103
+ health_image = @green_health_40
104
+ elsif health_level >= 130
105
+ health_image = @green_health_30
106
+ elsif health_level >= 120
107
+ health_image = @green_health_20
108
+ elsif health_level >= 110
109
+ health_image = @green_health_10
110
+ elsif health_level >= 100
111
+ health_image = @health_100
112
+ elsif health_level >= 90
113
+ health_image = @health_90
114
+ elsif health_level >= 80
115
+ health_image = @health_80
116
+ elsif health_level >= 70
117
+ health_image = @health_70
118
+ elsif health_level >= 60
119
+ health_image = @health_60
120
+ elsif health_level >= 50
121
+ health_image = @health_50
122
+ elsif health_level >= 40
123
+ health_image = @health_40
124
+ elsif health_level >= 30
125
+ health_image = @health_30
126
+ elsif health_level >= 20
127
+ health_image = @health_20
128
+ elsif health_level >= 10
129
+ health_image = @health_10
130
+ else
131
+ health_image = @health_00
132
+ end
133
+
134
+ health_image.draw(@health_bar_x, @health_bar_y, get_draw_ordering, @scale, @scale)
135
+
136
+ @bomb_hud.draw(@bomb_hud_x, @bomb_hud_y, get_draw_ordering, @scale, @scale)
137
+ # @bomb_hud_width_half = @bomb_hud_width / 2
138
+ # @bomb_hud_height_half = @bomb_hud_height /2
139
+ if player.get_secondary_name == 'Bomb'
140
+ bomb_color = @current_color
141
+ else
142
+ bomb_color = @red_color
143
+ end
144
+ @font.draw("#{player.bombs}", @bomb_hud_x + @bomb_hud_width_half - (@font.text_width("#{player.bombs}")), @bomb_hud_y + @bomb_hud_height_half, ZOrder::UI, @scale, @scale, bomb_color)
145
+ # local_width = @font.text_width('>')
146
+ # local_height = @font.height
147
+ @missile_hud.draw(@missile_hud_x, @missile_hud_y, get_draw_ordering, @scale, @scale)
148
+ # draw(text, x, y, z, scale_x = 1, scale_y = 1, color = 0xff_ffffff, mode = :default) ⇒ void
149
+ if player.get_secondary_name == 'Rocket'
150
+ rocket_color = @current_color
151
+ else
152
+ rocket_color = @red_color
153
+ end
154
+ @font.draw("#{player.rockets}", @missile_hud_x + @missile_hud_width_half - (@font.text_width("#{player.rockets}")), @missile_hud_y - 5 + @missile_hud_height_half, ZOrder::UI, @scale, @scale, rocket_color)
155
+
156
+ end
157
+
158
+
159
+ def update
160
+ raise "Do not call update on this object"
161
+ end
162
+
163
+
164
+ end