diff --git a/scenes/main.tscn b/scenes/main.tscn index 4eaac26..8f42fd1 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -4,7 +4,7 @@ [ext_resource type="PackedScene" uid="uid://4xha2nhf8fya" path="res://scenes/test_level.tscn" id="1_o5qli"] [ext_resource type="PackedScene" uid="uid://ca2so8fm3q8fe" path="res://scenes/player.tscn" id="2_0wfyh"] [ext_resource type="PackedScene" uid="uid://b18uib08hvdpq" path="res://scenes/managers/main_ui.tscn" id="3_sugp2"] -[ext_resource type="PackedScene" uid="uid://bn8c0cgecvjxl" path="res://scenes/enemies/enemy.tscn" id="5_tbgi4"] +[ext_resource type="PackedScene" uid="uid://dy73qrxcgrwg3" path="res://scenes/managers/enemy_manager.tscn" id="5_tbgi4"] [node name="Main" type="Node2D"] script = ExtResource("1_jyhfs") @@ -22,5 +22,5 @@ position = Vector2(1057, 798) camera = NodePath("../MainCamera") main_ui = NodePath("../MainUI") -[node name="Enemy" parent="." node_paths=PackedStringArray("target") instance=ExtResource("5_tbgi4")] +[node name="EnemyManager" parent="." node_paths=PackedStringArray("target") instance=ExtResource("5_tbgi4")] target = NodePath("../Player") diff --git a/scenes/managers/enemy_manager.gd b/scenes/managers/enemy_manager.gd new file mode 100644 index 0000000..24784fd --- /dev/null +++ b/scenes/managers/enemy_manager.gd @@ -0,0 +1,24 @@ +class_name EnemyManager +extends Node2D + +@export var max_enemies: int +@export var spawn_rate: float +@export var target: CollisionObject2D + +@onready var timer: Timer = $Timer + +var enemy_scene = preload("res://scenes/enemies/enemy.tscn") + +func _ready() -> void: + timer.wait_time = spawn_rate / 1 + timer.start() + + +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_scene.instantiate() + new_enemy.position = target.position + Vector2(50, 50) + new_enemy.target = target + add_child(new_enemy) diff --git a/scenes/managers/enemy_manager.gd.uid b/scenes/managers/enemy_manager.gd.uid new file mode 100644 index 0000000..d02dd9c --- /dev/null +++ b/scenes/managers/enemy_manager.gd.uid @@ -0,0 +1 @@ +uid://bccq4dt00s2ej diff --git a/scenes/managers/enemy_manager.tscn b/scenes/managers/enemy_manager.tscn new file mode 100644 index 0000000..a38e2ed --- /dev/null +++ b/scenes/managers/enemy_manager.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=3 uid="uid://dy73qrxcgrwg3"] + +[ext_resource type="Script" uid="uid://bccq4dt00s2ej" path="res://scenes/managers/enemy_manager.gd" id="1_tfsap"] + +[node name="EnemyManager" type="Node2D"] +script = ExtResource("1_tfsap") +max_enemies = 50 +spawn_rate = 1.0 + +[node name="Timer" type="Timer" parent="."] + +[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]