netmasked/scripts/room_spawn.gd
2026-02-27 16:23:41 +01:00

35 lines
799 B
GDScript

class_name RoomSpawn extends Area2D
var waves: Array[WaveNode] = []
var current_wave_index: int = 0
var active_enemies: int = 0
var has_triggered: bool = false
func _ready() -> void:
body_entered.connect(_on_body_entered)
for c in get_children():
if c is WaveNode:
waves.append(c)
func _on_body_entered(body: Node2D) -> void:
if has_triggered:
return
if body.is_in_group("player"):
has_triggered = true
# cant spawn collision shape in body entered
call_deferred("start_next_wave")
func start_next_wave() -> void:
if current_wave_index >= waves.size():
return
var current_wave = waves[current_wave_index]
current_wave.finished.connect(_on_finished)
current_wave.spawn_wave()
func _on_finished() -> void:
current_wave_index += 1
call_deferred("start_next_wave")