Add spaceship exit component, enemy wave trigger, and update various scene properties

This commit is contained in:
2025-05-25 20:10:48 +02:00
parent bac0a8c5f7
commit 37b96c0f11
11 changed files with 286 additions and 21 deletions

View File

@@ -0,0 +1,37 @@
class_name EnemyWaveTrigger
extends Node
@export var area2d: Area2D
@export var path_follow_node: PathFollow2D
@export var speed: float = 100.0
@export var loop: bool = false
@export var activate_on_enter: bool = true
var active: bool = false
func _ready() -> void:
area2d.body_entered.connect(_on_body_entered)
if path_follow_node:
path_follow_node.progress = 0
path_follow_node.set_process(false)
func _process(delta: float) -> void:
if not active or not path_follow_node:
return
path_follow_node.progress += speed * delta
if path_follow_node.progress_ratio >= 1.0 and not loop:
active = false
path_follow_node.set_process(false)
func _on_body_entered(body: Node2D) -> void:
if activate_on_enter:
start_wave()
func start_wave() -> void:
if path_follow_node:
path_follow_node.set_process(true)
active = true

View File

@@ -8,6 +8,7 @@ extends Node
@export var root: Node2D
@export var bullet_spawn_right: Node2D
@export var bullet_spawn_left: Node2D
@export var shooting_interval_variation: float = 0.0
var timer: Timer
@@ -43,9 +44,16 @@ func on_timer_timeout() -> void:
timer.start()
func get_shoot_interval() -> float:
if shooting_interval_variation > 0.0:
return shoot_interval + randf_range(-shooting_interval_variation, shooting_interval_variation)
return shoot_interval
func setup_timer() -> void:
timer = Timer.new()
timer.wait_time = shoot_interval
timer.wait_time = get_shoot_interval()
timer.one_shot = false
timer.autostart = true
timer.timeout.connect(on_timer_timeout)

View File

@@ -0,0 +1,21 @@
class_name SpaceshipExitComponent
extends Node
@export var area2d: Area2D
signal spaceship_exited
func _ready() -> void:
if not area2d:
printerr("SpaceshipExitComponent: area2d is not set.")
return
area2d.body_entered.connect(_on_area2d_body_entered)
func _on_area2d_body_entered(body: Node2D) -> void:
if not body is PlayerController:
printerr("SpaceshipExitComponent: body is not a PlayerController.")
return
print("SpaceshipExitComponent: PlayerController exited spaceship.")
spaceship_exited.emit()

View File

@@ -0,0 +1 @@
uid://ybmwls7hv8j3