34 lines
836 B
GDScript
34 lines
836 B
GDScript
class_name EnemyManager
|
|
extends Node2D
|
|
|
|
@export var max_enemies: int
|
|
@export var spawn_rate: float
|
|
@export var target: CollisionObject2D
|
|
|
|
@onready var timer: Timer = $Timer
|
|
|
|
const ENEMY_RAT = preload("res://scenes/enemies/enemy_rat.tscn")
|
|
|
|
|
|
func _ready() -> void:
|
|
timer.wait_time = spawn_rate / 1
|
|
timer.start()
|
|
GlobalConst.sig_stop_spawning.connect(_on_stop_spawning)
|
|
|
|
|
|
func _on_timer_timeout() -> void:
|
|
var enemies = get_tree().get_nodes_in_group(GlobalConst.GROUP_ENEMY)
|
|
GlobalConst.sig_debug_stats_set.emit("enemy_count", "%s" % len(enemies))
|
|
if len(enemies) < max_enemies:
|
|
var new_enemy = ENEMY_RAT.instantiate()
|
|
new_enemy.position = target.position + Vector2(50, 50)
|
|
new_enemy.target = target
|
|
add_child(new_enemy)
|
|
|
|
|
|
func _on_stop_spawning(val: bool):
|
|
if val:
|
|
timer.stop()
|
|
elif timer.is_stopped():
|
|
timer.start()
|