Diffstat (limited to 'enemy/scripts/Drone.gd')
-rw-r--r--enemy/scripts/Drone.gd110
1 files changed, 0 insertions, 110 deletions
diff --git a/enemy/scripts/Drone.gd b/enemy/scripts/Drone.gd
deleted file mode 100644
index 76516ba..0000000
--- a/enemy/scripts/Drone.gd
+++ /dev/null
@@ -1,110 +0,0 @@
-extends RigidBody2D
-
-var alive = true
-var asleep = false
-var health = 15
-var COOLDOWN = 1
-
-var hovering
-
-export var MAX_SPEED = 50
-export var MAX_THRUST = 25
-
-
-func _integrate_forces(state):
- if not alive:
- return
-
- if asleep:
- return
-
- var delta = state.get_step()
-
- # Check nearby objects with raycast
- var closest_collision = null
- $rays.rotation += delta * 11 * PI
- for ray in $rays.get_children():
- if ray.is_colliding():
- var collision_point = ray.get_collision_point() - global_position
- if closest_collision == null:
- closest_collision = collision_point
- if collision_point.length() < closest_collision.length():
- closest_collision = collision_point
-
- # Dodge
- if closest_collision:
- var normal = -closest_collision.normalized()
- var dodge_direction = 1
- if randf() < 0.5:
- dodge_direction = -1
- linear_velocity += normal * MAX_THRUST * 2 * delta
- linear_velocity += normal.rotated(PI / 2 * dodge_direction) * MAX_THRUST * delta
-
- # Steer towards player
- var distance_to_player = global_position.distance_to($"../../Ship".global_position)
- var vector_to_player = ($"../../Ship".global_position - global_position).normalized()
-
- # Rotate turret
- var start = $turret.rotation
- var angle_to_target = Vector2(1, 0).rotated(start).angle_to(vector_to_player)
- var end = start + angle_to_target
- $Tween.interpolate_property($turret, "rotation", start, end, 0.1, Tween.TRANS_QUAD, Tween.EASE_OUT)
- $Tween.start()
-
- if distance_to_player > 40:
- # Move towards player
- linear_velocity += vector_to_player * MAX_THRUST * delta
- hovering = false
- else:
- # Move away from player
- hovering = false
- linear_velocity += -vector_to_player * MAX_THRUST * delta
-
- # Clamp max speed
- if linear_velocity.length() > MAX_SPEED:
- linear_velocity = linear_velocity.normalized() * MAX_SPEED
-
-
-func shoot():
- $shootCooldown.wait_time = COOLDOWN * (1 + rand_range(-0.25, 0.25))
- $shootCooldown.start()
-
- if not alive:
- return
-
- if asleep:
- return
-
- # Start firing animation
- $AnimationPlayer.play("firing")
-
-
-const Laser = preload("res://bullets/scenes/EnemyLaser.tscn")
-
-
-func spawn_bullet():
- var laser = Game.instance_scene_on_main(Laser, global_position)
- laser.apply_impulse(Vector2.ZERO, Vector2(-50, 0))
-
-
-const ExplosionEffect = preload("res://effects/ExplosionEffect.tscn")
-const HitEffect = preload("res://effects/HitEffect.tscn")
-
-
-func create_hit_effect():
- Game.instance_scene_on_main(HitEffect, global_position)
-
-
-func create_explosion():
- Game.instance_scene_on_main(ExplosionEffect, global_position)
-
-
-func _exit_tree():
- create_explosion()
-
-
-func _on_Drone_body_entered(body):
- if body.is_in_group("pbullet"):
- health -= 1
- if health <= 0:
- queue_free()