Wave enemies (#9)

* Add enemy wave management and path following components

* cleanup
This commit is contained in:
2025-08-31 02:08:35 +02:00
committed by GitHub
parent 36d1cac284
commit 604520cad5
15 changed files with 267 additions and 285 deletions

View File

@@ -0,0 +1,52 @@
using Godot;
namespace Mr.BrickAdventures.scripts.components;
[GlobalClass]
public partial class WaveTriggerComponent : Node
{
[Export] public Area2D TriggerArea { get; set; }
[Export] public EnemyWaveManager WaveManager { get; set; }
[Export] public ChaseLevelComponent ChaserToPause { get; set; } // Optional
[Export] public bool PauseChaser { get; set; } = true;
private bool _hasBeenTriggered = false;
public override void _Ready()
{
if (TriggerArea == null || WaveManager == null)
{
GD.PrintErr("WaveTriggerComponent is missing a TriggerArea or WaveManager.");
SetProcess(false);
return;
}
TriggerArea.BodyEntered += OnPlayerEntered;
WaveManager.WaveCompleted += OnWaveCompleted;
}
private void OnPlayerEntered(Node2D body)
{
if (body is PlayerController && !_hasBeenTriggered)
{
_hasBeenTriggered = true;
if (PauseChaser && ChaserToPause != null)
{
ChaserToPause.SetChasing(false);
}
WaveManager.StartWave();
TriggerArea.QueueFree();
}
}
private void OnWaveCompleted()
{
GD.Print("Wave completed!");
if (PauseChaser && ChaserToPause != null)
{
ChaserToPause.SetChasing(true);
}
}
}