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
@@ -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