line-em-up 0.3.6 → 0.4.0

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.
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
@@ -0,0 +1,123 @@
1
+ require_relative 'mite.rb'
2
+
3
+ class HorizontalSwarm
4
+ # SPEED = 5
5
+ # MAX_ATTACK_SPEED = 3.0
6
+ # POINT_VALUE_BASE = 50
7
+ # MISSILE_LAUNCHER_MIN_ANGLE = 255
8
+ # MISSILE_LAUNCHER_MAX_ANGLE = 285
9
+ # MISSILE_LAUNCHER_INIT_ANGLE = 270
10
+ # attr_accessor :cooldown_wait, :attack_speed, :health, :armor, :x, :y
11
+ # SWARM_COUNT = 10
12
+ SWARM_COUNT = 10
13
+
14
+ # def get_image
15
+ # Gosu::Image.new("#{MEDIA_DIRECTORY}/missile_boat_reverse.png")
16
+ # end
17
+
18
+ def self.trigger_swarm(scale, screen_width, screen_height, y = nil, options = {})
19
+ # super(scale, x || rand(screen_width), y || 0, screen_width, screen_height, options)
20
+ # @cooldown_wait = 0
21
+ # @attack_speed = 0.5
22
+ # @current_speed = (rand(5) * @scale).round + 1
23
+ swarm = []
24
+ x_padding = 40 * scale
25
+ base_x_padding = 40 * scale
26
+ y_padding = 40 * scale
27
+
28
+ y = y || rand(screen_height / 3) + screen_height / 8
29
+
30
+ if rand(2) == 0
31
+ x_direction = 1
32
+ else
33
+ x_direction = -1
34
+ end
35
+
36
+ (0..(SWARM_COUNT - 1)).each do |i|
37
+ if i.even?
38
+ new_y = y
39
+ else
40
+ new_y = y - y_padding
41
+ end
42
+ if x_direction > 0
43
+ new_x = 0 - x_padding
44
+ else
45
+ new_x = screen_width + x_padding
46
+ end
47
+ x_padding = x_padding + base_x_padding
48
+ swarm << Mite.new(scale, new_x, new_y, screen_width, screen_height, x_direction, options)
49
+ end
50
+ return swarm
51
+ end
52
+
53
+ # def get_points
54
+ # return POINT_VALUE_BASE
55
+ # end
56
+
57
+
58
+ # def take_damage damage
59
+ # @health -= damage
60
+ # end
61
+
62
+ # def attack player
63
+ # x_padding_1 = 5 * @scale
64
+ # x_padding_2 = -(5 * @scale)
65
+ # return {
66
+ # projectiles: [
67
+ # SemiGuidedMissile.new(@scale, @screen_width, @screen_height, self, player, MISSILE_LAUNCHER_MIN_ANGLE, MISSILE_LAUNCHER_MAX_ANGLE, MISSILE_LAUNCHER_INIT_ANGLE, {custom_initial_delay: 2}),
68
+ # SemiGuidedMissile.new(@scale, @screen_width, @screen_height, self, player, MISSILE_LAUNCHER_MIN_ANGLE, MISSILE_LAUNCHER_MAX_ANGLE, MISSILE_LAUNCHER_INIT_ANGLE, {custom_initial_delay: 12, x_homing_padding: x_padding_1}),
69
+ # SemiGuidedMissile.new(@scale, @screen_width, @screen_height, self, player, MISSILE_LAUNCHER_MIN_ANGLE, MISSILE_LAUNCHER_MAX_ANGLE, MISSILE_LAUNCHER_INIT_ANGLE, {custom_initial_delay: 18, x_homing_padding: x_padding_2})
70
+ # ],
71
+ # cooldown: SemiGuidedMissile::COOLDOWN_DELAY
72
+ # }
73
+ # end
74
+
75
+
76
+ # def drops
77
+ # [
78
+ # SmallExplosion.new(@scale, @screen_width, @screen_height, @x, @y, @image),
79
+ # Star.new(@scale, @screen_width, @screen_height, @x, @y)
80
+ # ]
81
+ # end
82
+
83
+ # def get_draw_ordering
84
+ # ZOrder::Enemy
85
+ # end
86
+
87
+ # SPEED = 1
88
+ # def get_speed
89
+
90
+ # end
91
+
92
+ # def update mouse_x = nil, mouse_y = nil, player = nil
93
+ # @cooldown_wait -= 1 if @cooldown_wait > 0
94
+ # if is_alive
95
+ # # Stay above the player
96
+ # if player.is_alive && player.y < @y
97
+ # @y -= @current_speed
98
+ # else
99
+ # if rand(2).even?
100
+ # @y += @current_speed
101
+
102
+ # @y = @screen_height / 2 if @y > @screen_height / 2
103
+ # else
104
+ # @y -= @current_speed
105
+
106
+ # @y = 0 + (get_height / 2) if @y < 0 + (get_height / 2)
107
+ # end
108
+ # end
109
+ # if rand(2).even?
110
+ # @x += @current_speed
111
+ # @x = @screen_width if @x > @screen_width
112
+ # else
113
+ # @x -= @current_speed
114
+ # @x = 0 + (get_width / 2) if @x < 0 + (get_width / 2)
115
+ # end
116
+
117
+ # @y < @screen_height + (get_height / 2)
118
+ # else
119
+ # false
120
+ # end
121
+ # end
122
+
123
+ end
@@ -0,0 +1,92 @@
1
+ class Main < Gosu::Window
2
+ def initialize
3
+ @width, @height = ResolutionSetting::RESOLUTIONS[0].split('x').collect{|s| s.to_i}
4
+ super(@width, @height, false)
5
+ @cursor = Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/cursor.png", false)
6
+ @gl_background = GLBackground.new
7
+ # x = self.width / 2 - 100
8
+ # y = self.height / 2 - 100
9
+ @center_ui_y = 0
10
+ @center_ui_x = 0
11
+ reset_center_font_ui_y
12
+ lineHeight = 50
13
+ @font = Gosu::Font.new(20)
14
+ self.caption = "A menu with Gosu"
15
+ # items = Array["exit", "additem", "item"]
16
+ # actions = Array[lambda { self.close }, lambda {
17
+ # @menu.add_item(Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/item.png", false), x, y, 1, lambda { })
18
+ # y += lineHeight
19
+ # }, lambda {}]
20
+ @menu = Menu.new(self)
21
+ # for i in (0..items.size - 1)
22
+ # @menu.add_item(Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/#{items[i]}.png", false), x, y, 1, actions[i], Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/#{items[i]}_hover.png", false))
23
+ # y += lineHeight
24
+ # end
25
+ exit_image = Gosu::Image.new("#{MEDIA_DIRECTORY}/exit.png")
26
+ # puts "WIDTH HERE: #{exit_image.width}"
27
+ # 8
28
+ @menu.add_item(exit_image, ((@width / 2) - (exit_image.width / 2)), get_center_font_ui_y, 1, lambda { self.close }, exit_image)
29
+ window_height = Gosu.screen_height
30
+ @resolution_menu = ResolutionSetting.new(window_height, @width, @height, get_center_font_ui_y, CONFIG_FILE)
31
+
32
+ @difficulty = nil
33
+ @difficulty_menu = DifficultySetting.new(@width, @height, get_center_font_ui_y, CONFIG_FILE)
34
+
35
+ start_image = Gosu::Image.new("#{MEDIA_DIRECTORY}/start.png")
36
+ @game_window_width, @game_window_height, @full_screen = [nil, nil, nil]
37
+ @menu.add_item(start_image, (@width / 2) - (start_image.width / 2), get_center_font_ui_y, 1, lambda {self.close; GameWindow.start(@game_window_width, @game_window_height, dynamic_get_resolution_fs, {block_controls_until_button_up: true, difficulty: @difficulty}) }, start_image)
38
+ debug_start_image = Gosu::Image.new("#{MEDIA_DIRECTORY}/debug_start.png")
39
+ @menu.add_item(debug_start_image, (@width / 2) - (debug_start_image.width / 2), get_center_font_ui_y, 1, lambda {self.close; GameWindow.start(@game_window_width, @game_window_height, dynamic_get_resolution_fs, {block_controls_until_button_up: true, debug: true, difficulty: @difficulty}) }, debug_start_image)
40
+ # @font.draw("<", width + 15, get_center_font_ui_y, 1, 1.0, 1.0, 0xff_ffff00)
41
+ # @font.draw("Resolution", width / 2, get_center_font_ui_y, 1, 1.0, 1.0, 0xff_ffff00)
42
+ # @font.draw(">", width - 15, get_center_font_ui_y, 1, 1.0, 1.0, 0xff_ffff00)
43
+ # @menu.add_item(Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/start.png", false), get_center_font_ui_x, get_center_font_ui_y, 1, lambda { self.close; GameWindow.start(nil, nil, {block_controls_until_button_up: true}) }, Gosu::Image.new(self, "#{MEDIA_DIRECTORY}/start.png", false))
44
+ end
45
+
46
+ def dynamic_get_resolution_fs
47
+ @fullscreen
48
+ end
49
+
50
+ def update
51
+ @menu.update
52
+ @resolution_menu.update(self.mouse_x, self.mouse_y)
53
+ @difficulty_menu.update(self.mouse_x, self.mouse_y)
54
+
55
+ @game_window_width, @game_window_height, @fullscreen = @resolution_menu.get_resolution
56
+ @difficulty = @difficulty_menu.get_difficulty
57
+ @gl_background.scroll
58
+ end
59
+
60
+ def draw
61
+ @cursor.draw(self.mouse_x, self.mouse_y, 2)
62
+ # @back.draw(0,0,0)
63
+ reset_center_font_ui_y
64
+ @menu.draw
65
+ @resolution_menu.draw
66
+ @difficulty_menu.draw
67
+ @gl_background.draw(ZOrder::Background)
68
+ end
69
+
70
+ def button_down id
71
+ if id == Gosu::MsLeft then
72
+ @menu.clicked
73
+ @resolution_menu.clicked(self.mouse_x, self.mouse_y)
74
+ @difficulty_menu.clicked(self.mouse_x, self.mouse_y)
75
+ end
76
+ end
77
+
78
+ def get_center_font_ui_y
79
+ return_value = @center_ui_y
80
+ @center_ui_y += 50
81
+ return return_value
82
+ end
83
+
84
+ def get_center_font_ui_x
85
+ return @center_ui_x
86
+ end
87
+
88
+ def reset_center_font_ui_y
89
+ @center_ui_y = self.height / 2 - 100
90
+ @center_ui_x = self.width / 2 - 100
91
+ end
92
+ end
@@ -1,12 +1,17 @@
1
1
  require_relative 'projectile.rb'
2
+
3
+ require 'opengl'
4
+ # require 'glu'
5
+ # require 'glut'
6
+
2
7
  class Missile < Projectile
3
8
  attr_reader :x, :y, :time_alive, :mouse_start_x, :mouse_start_y
4
9
  COOLDOWN_DELAY = 30
5
- MAX_SPEED = 20
10
+ MAX_SPEED = 30
6
11
  STARTING_SPEED = 0.0
7
- INITIAL_DELAY = 2
8
- SPEED_INCREASE_FACTOR = 0.5
9
- DAMAGE = 50
12
+ INITIAL_DELAY = 0.5
13
+ SPEED_INCREASE_FACTOR = 2
14
+ DAMAGE = 10
10
15
  AOE = 0
11
16
 
12
17
  MAX_CURSOR_FOLLOW = 4
@@ -21,9 +26,51 @@ class Missile < Projectile
21
26
  # super(scale, screen_width, screen_height, object, end_point_x, end_point_y, angle_min, angle_max, angle_init, options)
22
27
  # # puts "MYYYY MISSILE ANGLE: #{@angle}"
23
28
  # end
29
+ # include Gl
30
+ # include Glu
31
+ # include Glut
32
+
33
+ # def draw
34
+ # z = ZOrder::Projectile
35
+ # # @image.draw(@x - get_width / 2, @y - get_height / 2, get_draw_ordering, @scale, @scale)
36
+ # # gl do
37
+ # # points_x = 3
38
+ # # pounts_y = 10
39
+ # # Gosu.gl(z) {
40
+ # # # glColor3f(r,g,b);
41
+ # # 0.upto(pounts_y) do |y|
42
+ # # 0.upto(points_x) do |x|
43
+ # # # glColor3f(1.0, 1.0, 0.0)
44
+ # # glColor4d(1, 0, 0, z)
45
+ # # glBegin(GL_LINES)
46
+ # # glColor3f(1.0, 0.0, 0.0)
47
+ # # glVertex3d(@x + x, @y + y, z)
48
+ # # # glVertex3d(@x - 5, @y , z)
49
+ # # glEnd
50
+ # # end
51
+ # # end
52
+ # # }
53
+
54
+ # Gosu.gl(z) {
55
+ # glLineWidth(2.5)
56
+ # glColor3f(1.0, 0.0, 0.0)
57
+ # glBegin(GL_LINES)
58
+ # glVertex3f(0.0, 0.0, 0.0)
59
+ # glVertex3f(15, 0, 0)
60
+ # glEnd
61
+ # }
62
+
63
+ # # end
64
+ # end
24
65
 
25
66
  def get_image
26
- Gosu::Image.new("#{MEDIA_DIRECTORY}/missile.png")
67
+ Gosu::Image.new("#{MEDIA_DIRECTORY}/mini_missile.png")
68
+ end
69
+
70
+ def drops
71
+ [
72
+ SmallExplosion.new(@scale, @screen_width, @screen_height, @x, @y, nil, {ttl: 2, third_scale: true}),
73
+ ]
27
74
  end
28
75
 
29
76
  # def initialize(object, mouse_x = nil, mouse_y = nil, options = {})
@@ -1,6 +1,6 @@
1
1
  require_relative 'player.rb'
2
2
  require_relative 'enemy_bullet.rb'
3
- require_relative 'enemy_homing_missile.rb'
3
+ require_relative 'semi_guided_missile.rb'
4
4
  require_relative 'small_explosion.rb'
5
5
  require_relative 'star.rb'
6
6
 
@@ -40,9 +40,15 @@ class MissileBoat < GeneralObject
40
40
  end
41
41
 
42
42
  def attack player
43
+ x_padding_1 = 5 * @scale
44
+ x_padding_2 = -(5 * @scale)
43
45
  return {
44
- projectiles: [EnemyHomingMissile.new(@scale, @screen_width, @screen_height, self, player, MISSILE_LAUNCHER_MIN_ANGLE, MISSILE_LAUNCHER_MAX_ANGLE, MISSILE_LAUNCHER_INIT_ANGLE)],
45
- cooldown: EnemyHomingMissile::COOLDOWN_DELAY
46
+ projectiles: [
47
+ SemiGuidedMissile.new(@scale, @screen_width, @screen_height, self, player, MISSILE_LAUNCHER_MIN_ANGLE, MISSILE_LAUNCHER_MAX_ANGLE, MISSILE_LAUNCHER_INIT_ANGLE, {custom_initial_delay: 2}),
48
+ SemiGuidedMissile.new(@scale, @screen_width, @screen_height, self, player, MISSILE_LAUNCHER_MIN_ANGLE, MISSILE_LAUNCHER_MAX_ANGLE, MISSILE_LAUNCHER_INIT_ANGLE, {custom_initial_delay: 12, x_homing_padding: x_padding_1}),
49
+ SemiGuidedMissile.new(@scale, @screen_width, @screen_height, self, player, MISSILE_LAUNCHER_MIN_ANGLE, MISSILE_LAUNCHER_MAX_ANGLE, MISSILE_LAUNCHER_INIT_ANGLE, {custom_initial_delay: 18, x_homing_padding: x_padding_2})
50
+ ],
51
+ cooldown: SemiGuidedMissile::COOLDOWN_DELAY
46
52
  }
47
53
  end
48
54
 
@@ -11,7 +11,12 @@ class MissilePack < Pickup
11
11
  end
12
12
 
13
13
  def collected_by_player player
14
- player.rockets += 25
14
+ value = 35
15
+ boost_increase = player.boost_increase
16
+ if boost_increase > 1
17
+ boost_increase = 1 + ((boost_increase - 1) / 10)
18
+ end
19
+ player.rockets += (boost_increase * value).round
15
20
  end
16
21
 
17
22
  end
@@ -0,0 +1,104 @@
1
+ require_relative 'player.rb'
2
+ require_relative 'enemy_bullet.rb'
3
+ require_relative 'semi_guided_missile.rb'
4
+ require_relative 'small_explosion.rb'
5
+ require_relative 'star.rb'
6
+ require_relative 'general_object.rb'
7
+
8
+ class Mite < GeneralObject
9
+ SPEED = 25
10
+ MAX_ATTACK_SPEED = 0.8
11
+ POINT_VALUE_BASE = 5
12
+ # MISSILE_LAUNCHER_MIN_ANGLE = 255
13
+ # MISSILE_LAUNCHER_MAX_ANGLE = 285
14
+ # MISSILE_LAUNCHER_INIT_ANGLE = 270
15
+ attr_accessor :cooldown_wait, :attack_speed, :health, :armor, :x, :y
16
+
17
+ def get_image
18
+ Gosu::Image.new("#{MEDIA_DIRECTORY}/mite.png")
19
+ end
20
+
21
+ def initialize(scale, x, y, screen_width, screen_height, x_direction, options = {})
22
+ # initialize(scale, x, y, screen_width, screen_height, options = {})
23
+ super(scale, x, y, screen_width, screen_height, options)
24
+ @cooldown_wait = 0
25
+ @attack_speed = 1
26
+ @health = 2
27
+ @armor = 0
28
+ @current_speed = self.class.get_max_speed * @scale
29
+ @x_direction = x_direction
30
+ @switched_directions = false
31
+ end
32
+
33
+ def get_points
34
+ return POINT_VALUE_BASE
35
+ end
36
+
37
+ def is_alive
38
+ @health > 0
39
+ end
40
+
41
+
42
+ def take_damage damage
43
+ @health -= damage
44
+ end
45
+
46
+ def attack player
47
+ return {
48
+ projectiles: [
49
+ SemiGuidedMissile.new(@scale, @screen_width, @screen_height, self, player)
50
+ ],
51
+ cooldown: SemiGuidedMissile::COOLDOWN_DELAY * MAX_ATTACK_SPEED
52
+ }
53
+ end
54
+
55
+
56
+ def drops
57
+ value = [SmallExplosion.new(@scale, @screen_width, @screen_height, @x, @y, nil, {ttl: 2, third_scale: true})]
58
+ value << Star.new(@scale, @screen_width, @screen_height, @x, @y) if rand(2) == 0
59
+ return value
60
+ end
61
+
62
+ def get_draw_ordering
63
+ ZOrder::Enemy
64
+ end
65
+
66
+ # def exec_gl
67
+ # raise "HERE"
68
+ # end
69
+
70
+ def update mouse_x = nil, mouse_y = nil, player = nil
71
+ @cooldown_wait -= 1 if @cooldown_wait > 0
72
+ @time_alive += 1
73
+ if is_alive
74
+ @x = @x + (@current_speed * @x_direction)
75
+ @y = @y + (Math.sin(@x / 50) * 5 * @scale)# * 20 * @scale
76
+
77
+ if @switched_directions
78
+ # puts "CASE 1"
79
+ if @x_direction > 0
80
+ # puts "CASE 1.3"
81
+ @x < @screen_width
82
+ else
83
+ # puts 'CASE 1.6'
84
+ @x > 0
85
+ end
86
+ else
87
+ if @x_direction < 0 && @x < 0 - @screen_width / 2
88
+ # puts "CASE 2: "
89
+ @switched_directions = true
90
+ @x_direction = @x_direction * -1
91
+ elsif @x_direction > 0 && @x > @screen_width + @screen_width / 2
92
+ # puts "CASE 3"
93
+ @switched_directions = true
94
+ @x_direction = @x_direction * -1
95
+ end
96
+ # puts "CASE 4"
97
+ return true
98
+ end
99
+ else
100
+ # puts "CASE 5"
101
+ false
102
+ end
103
+ end
104
+ end
@@ -1,6 +1,6 @@
1
1
  # require_relative 'player.rb'
2
2
  require_relative 'enemy_bullet.rb'
3
- require_relative 'enemy_homing_missile.rb'
3
+ require_relative 'semi_guided_missile.rb'
4
4
  require_relative 'small_explosion.rb'
5
5
  require_relative 'star.rb'
6
6
  require_relative 'enemy_bomb.rb'
@@ -67,10 +67,10 @@ class Mothership < GeneralObject
67
67
  return {
68
68
  projectiles: [
69
69
  # relative_object not required yet for these
70
- EnemyHomingMissile.new(@scale, @screen_width, @screen_height, self, player, MISSILE_LAUNCHER_MIN_ANGLE, MISSILE_LAUNCHER_MAX_ANGLE, MISSILE_LAUNCHER_INIT_ANGLE, {side: 'left', relative_object: self }),
71
- EnemyHomingMissile.new(@scale, @screen_width, @screen_height, self, player, MISSILE_LAUNCHER_MIN_ANGLE, MISSILE_LAUNCHER_MAX_ANGLE, MISSILE_LAUNCHER_INIT_ANGLE, {side: 'right', relative_object: self })
70
+ SemiGuidedMissile.new(@scale, @screen_width, @screen_height, self, player, MISSILE_LAUNCHER_MIN_ANGLE, MISSILE_LAUNCHER_MAX_ANGLE, MISSILE_LAUNCHER_INIT_ANGLE, {side: 'left', relative_object: self }),
71
+ SemiGuidedMissile.new(@scale, @screen_width, @screen_height, self, player, MISSILE_LAUNCHER_MIN_ANGLE, MISSILE_LAUNCHER_MAX_ANGLE, MISSILE_LAUNCHER_INIT_ANGLE, {side: 'right', relative_object: self })
72
72
  ],
73
- cooldown: EnemyHomingMissile::COOLDOWN_DELAY
73
+ cooldown: SemiGuidedMissile::COOLDOWN_DELAY
74
74
  }
75
75
  end
76
76