Enemies react to alarm

This commit is contained in:
Marco 2025-02-05 10:09:05 +01:00
commit 1d24be6156

View file

@ -16,6 +16,8 @@ public partial class Enemy : CharacterBody2D
[Export] public float PlayerDisengageRange = 500f;
[Export] public float AlarmReactRange = 200f;
[Export] public Weapon EquippedWeapon;
private float _currentHealth = 0f;
@ -36,6 +38,7 @@ public partial class Enemy : CharacterBody2D
[Export]
private bool _navigationEnabled = false;
private AlarmManager _alarmManager;
public bool NavigationEnabled
{
get => _navigationEnabled && _navigationAgent != null;
@ -48,8 +51,22 @@ public partial class Enemy : CharacterBody2D
_currentHealth = Health;
_navigationAgent = GetNodeOrNull<NavigationAgent2D>("NavigationAgent2D");
_alarmManager = GetNode<AlarmManager>("/root/GameScene/AlarmManager");
_alarmManager.AlarmEnabled += AlarmManagerOnAlarmEnabled;
}
private void AlarmManagerOnAlarmEnabled(Vector2 location)
{
if (NavigationEnabled && location.DistanceTo(this.GlobalPosition) <= AlarmReactRange)
{
GD.Print($"Enemy {Name} alerted");
this._currentState = EnemyState.Alert;
_lastPlayerPosition = location;
}
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
{