TowerDefense/spawner.gd

54 lines
1 KiB
GDScript3
Raw Normal View History

2025-03-26 18:55:43 +01:00
extends Path3D
class_name Spawner
@export var waves : Array[Wave]
var current_wave : Wave
var current_troop : Troop
var enemies_to_spawn : int = 0
var can_spawn : bool = false
var wave_on_going : bool = false
func spawn_next_wave() -> void:
current_wave = waves.pop_front()
$SpawnTimer.start(current_wave.wait_time_before_next_wave)
func _process(delta: float) -> void:
spawn_manager()
func spawn() -> void:
$SpawnTimer.start()
var tempEnemy = current_troop.enemy.instantiate()
add_child(tempEnemy)
enemies_to_spawn -= 1
GameManager.enemies_alive += 1
can_spawn = false
func spawn_manager() -> void:
if !can_spawn:
return
if !current_wave.troops.is_empty() and enemies_to_spawn == 0:
current_troop = current_wave.troops.pop_front()
enemies_to_spawn = current_troop.number_to_spawn
if enemies_to_spawn > 0:
spawn()
if GameManager.enemies_alive > 0:
wave_on_going = true
else:
wave_on_going = false
spawn_next_wave()
func _on_spawn_timer_timeout() -> void:
can_spawn = true
$SpawnTimer.wait_time = 1.0