line-em-up 0.3.6 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/line-em-up/game_window.rb +38 -10
  3. data/line-em-up/lib/resolution_setting.rb +0 -1
  4. data/line-em-up/lib/z_order.rb +1 -1
  5. data/line-em-up/media/back_to_menu.png +0 -0
  6. data/line-em-up/media/laserbolt.png +0 -0
  7. data/line-em-up/media/mite.png +0 -0
  8. data/line-em-up/media/mite_original.png +0 -0
  9. data/line-em-up/media/progress_bar_0.png +0 -0
  10. data/line-em-up/media/progress_bar_1.png +0 -0
  11. data/line-em-up/media/progress_bar_10.png +0 -0
  12. data/line-em-up/media/progress_bar_11.png +0 -0
  13. data/line-em-up/media/progress_bar_12.png +0 -0
  14. data/line-em-up/media/progress_bar_13.png +0 -0
  15. data/line-em-up/media/progress_bar_14.png +0 -0
  16. data/line-em-up/media/progress_bar_15.png +0 -0
  17. data/line-em-up/media/progress_bar_16.png +0 -0
  18. data/line-em-up/media/progress_bar_17.png +0 -0
  19. data/line-em-up/media/progress_bar_18.png +0 -0
  20. data/line-em-up/media/progress_bar_19.png +0 -0
  21. data/line-em-up/media/progress_bar_2.png +0 -0
  22. data/line-em-up/media/progress_bar_20.png +0 -0
  23. data/line-em-up/media/progress_bar_3.png +0 -0
  24. data/line-em-up/media/progress_bar_4.png +0 -0
  25. data/line-em-up/media/progress_bar_5.png +0 -0
  26. data/line-em-up/media/progress_bar_6.png +0 -0
  27. data/line-em-up/media/progress_bar_7.png +0 -0
  28. data/line-em-up/media/progress_bar_8.png +0 -0
  29. data/line-em-up/media/progress_bar_9.png +0 -0
  30. data/line-em-up/media/rocket_launcher.png +0 -0
  31. data/line-em-up/media/rocket_launcher_original.png +0 -0
  32. data/line-em-up/media/tiny_missile.png +0 -0
  33. data/line-em-up/models/bomb_pack.rb +2 -1
  34. data/line-em-up/models/bullet.rb +86 -3
  35. data/line-em-up/models/bullet_open_gl_backup.rb +69 -0
  36. data/line-em-up/models/dumb_projectile.rb +2 -1
  37. data/line-em-up/models/enemy_bullet.rb +4 -3
  38. data/line-em-up/models/enemy_player.rb +1 -1
  39. data/line-em-up/models/footer_bar.rb +34 -1
  40. data/line-em-up/models/general_object.rb +2 -0
  41. data/line-em-up/models/health_pack.rb +5 -3
  42. data/line-em-up/models/horizontal_swarm.rb +123 -0
  43. data/line-em-up/models/main.rb +92 -0
  44. data/line-em-up/models/missile.rb +52 -5
  45. data/line-em-up/models/missile_boat.rb +9 -3
  46. data/line-em-up/models/missile_pack.rb +6 -1
  47. data/line-em-up/models/mite.rb +104 -0
  48. data/line-em-up/models/mothership.rb +4 -4
  49. data/line-em-up/models/player.rb +126 -40
  50. data/line-em-up/models/projectile.rb +28 -13
  51. data/line-em-up/models/rocket_launcher_pickup.rb +26 -0
  52. data/line-em-up/models/{enemy_homing_missile.rb → semi_guided_missile.rb} +13 -5
  53. data/line-em-up/models/small_explosion.rb +18 -6
  54. data/line-em-up/models/star.rb +7 -3
  55. data/menu_launcher.rb +1 -95
  56. metadata +35 -3
  57. data/line-em-up/media/bomb_original copy.png +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a780d246a95abf5113ec05675e5f371d98c607e6
4
- data.tar.gz: fbe35beb2057b0bb4585006729cb10cbd9e02d06
3
+ metadata.gz: 8342c51e3321fb4fece0302657a4ca034a4d78a6
4
+ data.tar.gz: 87f084f07f94bc47e837d0527cf54d3111528dcf
5
5
  SHA512:
6
- metadata.gz: 3023953f7bfbe84799d35a5525d588964c237700c63ae5521df82359e28a383146adca85a83bad6154020641ae03912bd1e311d9c6dc74a2328d32c0fe79d3c9
7
- data.tar.gz: d1dad27f58937b300038036482dd4b630100bcebef585db019870454bf3092bcd36bd8b2b2f9490e36c72e96c4c8e3bc30ddd5a31b9c84bd01335dd25457dc44
6
+ metadata.gz: 868ba45bb2b797f9af0b9e9fcb8377d556dc32172f6a59c3cb2bca296134573b9b62c62c55c43813599aea07e582f34e7aec2f7c6eb28542e2625597f5294f2c
7
+ data.tar.gz: 8a8b90012fae38067138062d0ab5444c45e24de6fef95a91c7ab4d4de7ceadf8df4ca7494de63ef9fdbef20e912f096604d71b8184fda52cfd379c7016eb5209
@@ -109,7 +109,6 @@ class GameWindow < Gosu::Window
109
109
 
110
110
  @gl_background = GLBackground.new
111
111
 
112
- @player = Player.new(@scale, @width / 2, @height / 2, @width, @height)
113
112
  @grappling_hook = nil
114
113
 
115
114
  @buildings = Array.new
@@ -137,15 +136,19 @@ class GameWindow < Gosu::Window
137
136
 
138
137
  # @boss_active_at_enemies_killed = 500
139
138
  if @difficulty == 'easy'
140
- @boss_active_at_enemies_killed = 100
141
- @boss_active_at_level = 1
139
+ @boss_active_at_enemies_killed = 300
140
+ @boss_active_at_level = 2
141
+ @handicap = 0.3
142
142
  elsif @difficulty == "medium"
143
143
  @boss_active_at_level = 3
144
- @boss_active_at_enemies_killed = 350
144
+ @boss_active_at_enemies_killed = 450
145
+ @handicap = 0.6
145
146
  else
146
147
  @boss_active_at_level = 4
147
148
  @boss_active_at_enemies_killed = 700
149
+ @handicap = 1
148
150
  end
151
+ @player = Player.new(@scale, @width / 2, @height / 2, @width, @height, {handicap: @handicap, max_movable_height: @height - @footer_bar.height})
149
152
 
150
153
  @boss_active = false
151
154
  @boss = nil
@@ -154,12 +157,22 @@ class GameWindow < Gosu::Window
154
157
 
155
158
 
156
159
  # Switch button downs to this method
160
+ # This only triggers once during press. Use the other section for when we want it contunually triggered
157
161
  def button_down(id)
158
162
  # puts "HERE: #{id.inspect}"
159
163
  # super(id)
160
164
  if id == Gosu::MsLeft && @menu_open && @menu
161
165
  @menu.clicked
162
166
  end
167
+
168
+ if @player.is_alive && !@game_pause && !@menu_open
169
+ # KB_LEFT_CONTROL = 224,
170
+ if id == Gosu::KB_LEFT_CONTROL && @player.ready_for_special?
171
+ puts "Gosu::KB_LEFT_CONTROL CLICKED!!"
172
+ @player.special_attack
173
+ end
174
+ end
175
+
163
176
  end
164
177
 
165
178
  def self.reset(window, options = {})
@@ -283,8 +296,9 @@ class GameWindow < Gosu::Window
283
296
  @menu_open = true
284
297
  @can_open_menu = false
285
298
  @menu = Menu.new(self)
286
- @menu.add_item(Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/exit.png", false), get_center_font_ui_x, get_center_font_ui_y, ZOrder::UI, lambda { self.close }, Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/exit_hover.png", false))
287
299
  @menu.add_item(Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/resume.png", false), get_center_font_ui_x, get_center_font_ui_y, ZOrder::UI, lambda { @menu_open = false; @menu = nil; @can_open_menu = true; }, Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/resume.png", false))
300
+ @menu.add_item(Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/back_to_menu.png", false), get_center_font_ui_x, get_center_font_ui_y, ZOrder::UI, lambda { self.close; Main.new.show }, Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/back_to_menu.png", false))
301
+ @menu.add_item(Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/exit.png", false), get_center_font_ui_x, get_center_font_ui_y, ZOrder::UI, lambda { self.close }, Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/exit.png", false))
288
302
  # close!
289
303
  end
290
304
  if Gosu.button_down?(Gosu::KB_M)
@@ -358,10 +372,12 @@ class GameWindow < Gosu::Window
358
372
  @player.collect_pickups(@pickups)
359
373
 
360
374
  @enemy_projectiles.each do |projectile|
361
- projectile.hit_object(@player)
375
+ results = projectile.hit_object(@player)
376
+ @pickups = @pickups + results[:drops]
362
377
  end
363
378
  @enemy_destructable_projectiles.each do |projectile|
364
- projectile.hit_object(@player)
379
+ results = projectile.hit_object(@player)
380
+ @pickups = @pickups + results[:drops]
365
381
  end
366
382
 
367
383
 
@@ -376,6 +392,7 @@ class GameWindow < Gosu::Window
376
392
  @pickups = @pickups + results[:drops]
377
393
  @player.score += results[:point_value]
378
394
  @enemies_killed += results[:killed]
395
+ @player.add_kill_count(results[:killed])
379
396
  end
380
397
 
381
398
 
@@ -418,10 +435,19 @@ class GameWindow < Gosu::Window
418
435
  # @enemies.push(MissileBoat.new(@scale, @width, @height)) if rand(10) == 0
419
436
  if !@boss_active && !@boss && !@boss_killed
420
437
 
438
+ if @player.is_alive && (@player.time_alive % 1000 == 0) # && @enemies.count <= @max_enemies
439
+ # @enemies.push(EnemyPlayer.new(@scale, @width, @height)) if @enemies.count <= @max_enemy_count
440
+ @pickups << RocketLauncherPickup.new(@scale, @width, @height)
441
+ end
442
+ if @player.is_alive && (@player.time_alive % 1300 == 0) # && @enemies.count <= @max_enemies
443
+ # @enemies.push(EnemyPlayer.new(@scale, @width, @height)) if @enemies.count <= @max_enemy_count
444
+ swarm = HorizontalSwarm.trigger_swarm(@scale, @width, @height)
445
+ @enemies = @enemies + swarm
446
+ end
447
+
421
448
  if @player.is_alive && rand(@enemies_random_spawn_timer) == 0 && @enemies.count <= @max_enemies
422
449
  (0..(@enemies_spawner_counter / 2).round).each do |count|
423
450
  @enemies.push(EnemyPlayer.new(@scale, @width, @height)) if @enemies.count <= @max_enemy_count
424
- # @enemies.push(MissileBoat.new(@scale, @width, @height)) if @enemies.count == 0
425
451
  end
426
452
  end
427
453
  if @player.time_alive % 500 == 0
@@ -445,7 +471,6 @@ class GameWindow < Gosu::Window
445
471
  end
446
472
  end
447
473
  if @boss_active_at_enemies_killed <= @enemies_killed || @boss_active_at_level <= @enemies_spawner_counter
448
- # puts "HEREaagL #{@boss_active_at_enemies_killed} amd #{@enemies_killed} and #{@boss_active_at_level} and #{ @enemies_spawner_counter}"
449
474
  @boss_active = true
450
475
  end
451
476
 
@@ -554,7 +579,7 @@ class GameWindow < Gosu::Window
554
579
  @font.draw("Score: #{@player.score}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00)
555
580
  @font.draw("Level: #{@enemies_spawner_counter + 1}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00)
556
581
  @font.draw("Enemies Killed: #{@enemies_killed}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00)
557
- @font.draw("Boss Health: #{@boss.health}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00) if @boss
582
+ @font.draw("Boss Health: #{@boss.health.round(2)}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00) if @boss
558
583
  if @debug
559
584
  # @font.draw("Attack Speed: #{@player.attack_speed.round(2)}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00)
560
585
  @font.draw("Health: #{@player.health}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00)
@@ -572,6 +597,9 @@ class GameWindow < Gosu::Window
572
597
  @font.draw("pickups count: #{@pickups.count}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00)
573
598
  @font.draw("buildings count: #{@buildings.count}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00)
574
599
  @font.draw("Object count: #{@enemies.count + @enemy_projectiles.count + @projectiles.count + @enemy_destructable_projectiles.count + @pickups.count + @buildings.count}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00)
600
+ @font.draw("Damage Reduction: #{@player.damage_reduction.round(2)}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00)
601
+ @font.draw("Boost Incease: #{@player.boost_increase.round(2)}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00)
602
+ @font.draw("Attack Speed: #{@player.attack_speed.round(2)}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00)
575
603
  @font.draw("FPS: #{Gosu.fps}", 10, get_font_ui_y, ZOrder::UI, 1.0, 1.0, 0xff_ffff00)
576
604
  end
577
605
  @gl_background.draw(ZOrder::Background)
@@ -8,7 +8,6 @@ class ResolutionSetting < Setting
8
8
 
9
9
 
10
10
  def initialize fullscreen_height, max_width, max_height, height, config_file_path
11
- # puts "INNITING #{config_file_path}"
12
11
  @font = Gosu::Font.new(20)
13
12
  # @x = width
14
13
  @y = height
@@ -1,3 +1,3 @@
1
1
  module ZOrder
2
- Background, Building, Cursor, Projectile, SmallExplosions, BigExplosions, Pickups, Enemy, Player, UI = *0..10
2
+ Background, Building, Cursor, Projectile, BigExplosions, Pickups, Enemy, Player, SmallExplosions, UI = *0..10
3
3
  end
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -11,7 +11,8 @@ class BombPack < Pickup
11
11
  end
12
12
 
13
13
  def collected_by_player player
14
- player.bombs += 3
14
+ value = 3
15
+ player.bombs += (value * player.boost_increase).round
15
16
  end
16
17
 
17
18
  end
@@ -1,12 +1,95 @@
1
1
  require_relative 'dumb_projectile.rb'
2
+ require 'opengl'
3
+ # require 'ruby-opengl'
4
+ # require 'glu'
5
+ # require 'glut'
2
6
 
3
7
  class Bullet < DumbProjectile
4
- DAMAGE = 5
5
- COOLDOWN_DELAY = 30
8
+ DAMAGE = 3
9
+ COOLDOWN_DELAY = 20
6
10
  # Friendly projects are + speeds
7
- MAX_SPEED = 5
11
+ MAX_SPEED = 15
8
12
 
9
13
  def get_image
14
+ # Gosu::Image.new("#{MEDIA_DIRECTORY}/laserbolt.png")
10
15
  Gosu::Image.new("#{MEDIA_DIRECTORY}/bullet-mini.png")
11
16
  end
17
+
18
+ # include Gl
19
+ # include Glu
20
+ # include Glut
21
+
22
+
23
+ def alt_draw
24
+ glClearColor(0.0, 0.2, 0.5, 1.0)
25
+ glClearDepth(0)
26
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
27
+ # info = @image.gl_tex_info
28
+ glDepthFunc(GL_GEQUAL)
29
+ glEnable(GL_DEPTH_TEST)
30
+ glEnable(GL_BLEND)
31
+
32
+ glMatrixMode(GL_PROJECTION)
33
+ glLoadIdentity
34
+ glTranslate(0, 0, -4)
35
+
36
+ # glEnable(GL_TEXTURE_2D)
37
+ # glBindTexture(GL_TEXTURE_2D, info.tex_name)
38
+
39
+
40
+
41
+ middle_x = @screen_width / 2
42
+ puts "MIDDLE X: #{middle_x}"
43
+ middle_y = @screen_height / 2
44
+ puts "MIDDLE Y: #{middle_y}"
45
+ increment_x = 1.0 / middle_x
46
+ increment_y = 1.0 / middle_y
47
+ puts "INcREMENT X : #{increment_x}"
48
+ puts "INcREMENT Y : #{increment_y}"
49
+
50
+ puts "PRE X: #{@x}"
51
+ puts "PRE Y: #{@y}"
52
+ puts "MID X: #{(@x - middle_x)}"
53
+ puts "MID Y: #{(@y - middle_y)}"
54
+
55
+ new_pos_x = (@x - middle_x) * increment_x
56
+ new_pos_y = (@y - middle_y) * increment_y
57
+ # Inverted Y
58
+ new_pos_y = new_pos_y * -1
59
+
60
+ height = @image_height.to_f * increment_x
61
+
62
+ puts "NEW POS X: #{new_pos_x}"
63
+ puts "NEW POS Y: #{new_pos_y}"
64
+
65
+ z = ZOrder::Projectile
66
+ # @image.draw(@x - get_width / 2, @y - get_height / 2, get_draw_ordering, @scale, @scale)
67
+ # gl do
68
+ # points_x = 3
69
+ # pounts_y = 10
70
+ Gosu.gl(z) do
71
+ glLineWidth(5)
72
+ glBegin(GL_LINES)
73
+ glColor3f(1.0, 0.0, 0.0)
74
+ glVertex3d(new_pos_x, new_pos_y, z)
75
+ glVertex3d(new_pos_x, new_pos_y - height, z)
76
+ # glVertex3d(new_pos_x, new_pos_y - increment_y, z)
77
+ # glVertex3d(0, 0, z)
78
+ # glVertex3d(1, 0, z)
79
+ glEnd
80
+ end
81
+
82
+ # Gosu.gl(z) do
83
+ # glLineWidth(50)
84
+ # glColor3f(1.0, 0.0, 0.0)
85
+ # glBegin(GL_TRIANGLE_STRIP)
86
+ # glVertex3f(0, 0.0, z)
87
+ # glVertex3f(0.5, 0, z)
88
+ # glVertex3f(0.5, 0.5, z)
89
+ # glEnd
90
+ # end
91
+
92
+ # end
93
+ end
94
+
12
95
  end
@@ -0,0 +1,69 @@
1
+ # require_relative 'dumb_projectile.rb'
2
+ # require 'opengl'
3
+ # # require 'ruby-opengl'
4
+ # require 'glu'
5
+ # require 'glut'
6
+
7
+ # class BackupBullet < DumbProjectile
8
+ # DAMAGE = 3
9
+ # COOLDOWN_DELAY = 20
10
+ # # Friendly projects are + speeds
11
+ # MAX_SPEED = 15
12
+
13
+ # def get_image
14
+ # Gosu::Image.new("#{MEDIA_DIRECTORY}/bullet-mini.png")
15
+ # end
16
+
17
+ # include Gl
18
+ # include Glu
19
+ # include Glut
20
+
21
+
22
+ # def draw
23
+ # glClearColor(0.0, 0.2, 0.5, 1.0)
24
+ # glClearDepth(0)
25
+ # glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
26
+ # glDepthFunc(GL_GEQUAL)
27
+ # glEnable(GL_DEPTH_TEST)
28
+ # glEnable(GL_BLEND)
29
+
30
+ # glMatrixMode(GL_PROJECTION)
31
+ # glLoadIdentity
32
+ # glTranslate(0, 0, -4)
33
+
34
+ # glEnable(GL_TEXTURE_2D)
35
+ # # glBindTexture(GL_TEXTURE_2D, info.tex_name)
36
+
37
+ # z = ZOrder::Projectile
38
+ # # @image.draw(@x - get_width / 2, @y - get_height / 2, get_draw_ordering, @scale, @scale)
39
+ # # gl do
40
+ # # points_x = 3
41
+ # # pounts_y = 10
42
+ # # Gosu.gl(z) {
43
+ # # # glColor3f(r,g,b);
44
+ # # 0.upto(pounts_y) do |y|
45
+ # # 0.upto(points_x) do |x|
46
+ # # # glColor3f(1.0, 1.0, 0.0)
47
+ # # glColor4d(1, 0, 0, z)
48
+ # # glBegin(GL_LINES)
49
+ # # glColor3f(1.0, 0.0, 0.0)
50
+ # # glVertex3d(@x + x, @y + y, z)
51
+ # # # glVertex3d(@x - 5, @y , z)
52
+ # # glEnd
53
+ # # end
54
+ # # end
55
+ # # }
56
+
57
+ # Gosu.gl(z) do
58
+ # glLineWidth(50)
59
+ # glColor3f(1.0, 0.0, 0.0)
60
+ # glBegin(GL_LINES)
61
+ # glVertex3f(0.0, 0.0, z)
62
+ # glVertex3f(15, 0, z)
63
+ # glEnd
64
+ # end
65
+
66
+ # # end
67
+ # end
68
+
69
+ # end
@@ -20,6 +20,7 @@ class DumbProjectile < GeneralObject
20
20
 
21
21
  def initialize(scale, screen_width, screen_height, object, options = {})
22
22
  options[:relative_object] = object
23
+ @damage_increase = options[:damage_increase] || 1
23
24
  super(scale, object.x, object.y, screen_width, screen_height, options)
24
25
  @current_speed = self.class.get_max_speed * @scale
25
26
  end
@@ -58,7 +59,7 @@ class DumbProjectile < GeneralObject
58
59
  hit_object = Gosu.distance(@x, @y, object.x, object.y) < self.get_radius + object.get_radius
59
60
  if hit_object
60
61
  if object.respond_to?(:health) && object.respond_to?(:take_damage)
61
- object.take_damage(self.class.get_damage)
62
+ object.take_damage(self.class.get_damage * @damage_increase)
62
63
  end
63
64
 
64
65
  if object.respond_to?(:is_alive) && !object.is_alive && object.respond_to?(:drops)
@@ -1,10 +1,11 @@
1
1
  require_relative 'dumb_projectile.rb'
2
2
 
3
3
  class EnemyBullet < DumbProjectile
4
- DAMAGE = 5
5
- COOLDOWN_DELAY = 30
4
+ DAMAGE = 3
5
+ COOLDOWN_DELAY = 18
6
6
  # Enemy y speeds are negative
7
- MAX_SPEED = -5
7
+ MAX_SPEED = -10
8
+
8
9
 
9
10
  def get_image
10
11
  Gosu::Image.new("#{MEDIA_DIRECTORY}/bullet-mini-reverse.png")
@@ -17,7 +17,7 @@ class EnemyPlayer < GeneralObject
17
17
  super(scale, x || rand(screen_width), y || 0, screen_width, screen_height, options)
18
18
  @cooldown_wait = 0
19
19
  @attack_speed = 0.5
20
- @health = 15
20
+ @health = 25
21
21
  @armor = 0
22
22
  @current_speed = (rand(5) * @scale).round + 1
23
23
  end
@@ -1,7 +1,7 @@
1
1
  require_relative 'general_object.rb'
2
2
 
3
3
  class FooterBar < GeneralObject
4
- attr_reader :x, :y, :living_time
4
+ attr_reader :x, :y, :living_time, :height
5
5
 
6
6
  def initialize(scale, screen_width = nil, screen_height = nil, image = nil)
7
7
  @scale = scale * 0.7
@@ -19,6 +19,7 @@ class FooterBar < GeneralObject
19
19
  @health_00 = Gosu::Image.new("#{MEDIA_DIRECTORY}/health_bar_10.png")
20
20
 
21
21
 
22
+
22
23
  @green_health_100 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_0.png")
23
24
  @green_health_90 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_1.png")
24
25
  @green_health_80 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_2.png")
@@ -30,6 +31,20 @@ class FooterBar < GeneralObject
30
31
  @green_health_20 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_8.png")
31
32
  @green_health_10 = Gosu::Image.new("#{MEDIA_DIRECTORY}/green_health_bar_9.png")
32
33
 
34
+ @progress_bar = []
35
+ @progress_bar_increments = 20
36
+ (0..20).each do |i|
37
+ @progress_bar << Gosu::Image.new("#{MEDIA_DIRECTORY}/progress_bar_#{i}.png")
38
+ end
39
+ @progress_bar_width = (@progress_bar.first.width * @scale)
40
+ @progress_bar_height = (@progress_bar.first.height * @scale)
41
+
42
+ # Right in the middle of the screen
43
+ @progress_bar_x = (screen_width / 2) - @progress_bar_width / 2
44
+ # Lets see how it looks without padding
45
+ @progress_bar_y = screen_height - @progress_bar_height # - padding
46
+
47
+
33
48
  @bomb_hud = Gosu::Image.new("#{MEDIA_DIRECTORY}/bomb_pack_hud.png")
34
49
  @missile_hud = Gosu::Image.new("#{MEDIA_DIRECTORY}/missile_pack_hud.png")
35
50
 
@@ -78,6 +93,8 @@ class FooterBar < GeneralObject
78
93
  @current_color.red = 51
79
94
  @current_color.green = 204
80
95
  @current_color.blue = 51
96
+
97
+ @height = [@missile_hud_height, @bomb_hud_height, @health_bar_height].max
81
98
  # rgb(51, 204, 51)
82
99
  end
83
100
 
@@ -133,6 +150,22 @@ class FooterBar < GeneralObject
133
150
 
134
151
  health_image.draw(@health_bar_x, @health_bar_y, get_draw_ordering, @scale, @scale)
135
152
 
153
+
154
+
155
+ # progress_bar = []
156
+ # progress_bar_increments = 20
157
+ # (0..20).each do |i|
158
+ # progress_bar << Gosu::Image.new("#{MEDIA_DIRECTORY}/progress_bar_#{i}.png")
159
+ # end
160
+ # @progress_bar_width = (progress_bar.first.width * @scale)
161
+ # @progress_bar_height = (progress_bar.first.height * @scale)
162
+ index = player.kill_count * @progress_bar_increments / player.get_kill_count_max
163
+ current_progress_bar = @progress_bar[index]
164
+ current_progress_bar.draw(@progress_bar_x, @progress_bar_y, get_draw_ordering, @scale, @scale)
165
+
166
+
167
+
168
+
136
169
  @bomb_hud.draw(@bomb_hud_x, @bomb_hud_y, get_draw_ordering, @scale, @scale)
137
170
  # @bomb_hud_width_half = @bomb_hud_width / 2
138
171
  # @bomb_hud_height_half = @bomb_hud_height /2
@@ -25,6 +25,7 @@ class GeneralObject
25
25
  @x = options[:relative_object].x
26
26
  @y = options[:relative_object].y
27
27
  end
28
+ @x = @x + options[:relative_x_padding] if options[:relative_x_padding]
28
29
  else
29
30
  @x = x
30
31
  @y = y
@@ -140,6 +141,7 @@ class GeneralObject
140
141
  end
141
142
 
142
143
  def self.is_angle_between_two_angles?(angle, min_angle, max_angle)
144
+ return angle if min_angle.nil? || max_angle.nil?
143
145
  value = false
144
146
  if angle == min_angle
145
147
  value = true
@@ -16,16 +16,18 @@ class HealthPack < Pickup
16
16
  end
17
17
  image_rot = 12 if image_rot == 13
18
18
  @image = Gosu::Image.new("#{MEDIA_DIRECTORY}/health_pack_#{image_rot}.png", :tileable => true)
19
- @image.draw(@x - get_width / 2, @y - get_height / 2, ZOrder::Pickups)
19
+ @image.draw(@x - get_width / 2, @y - get_height / 2, ZOrder::Pickups, @scale, @scale)
20
20
  # super
21
21
  end
22
22
 
23
23
 
24
24
  def collected_by_player player
25
- if player.health + HEALTH_BOOST > player.class::MAX_HEALTH
25
+ value = player.boost_increase * HEALTH_BOOST
26
+ if player.health + value > player.class::MAX_HEALTH
26
27
  player.health = player.class::MAX_HEALTH
27
28
  else
28
- player.health += HEALTH_BOOST
29
+
30
+ player.health += value
29
31
  end
30
32
  end
31
33