newlon/scripts/entities/EntityHPObserver.cs
2025-07-22 19:24:34 +05:00

32 lines
833 B
C#

using Godot;
namespace Newlon.Components;
public partial class EntityHPObserver : Node
{
[Export] private float _threshold = 0.5f;
[Export] private bool _setGreater = false;
[Export] private Entity _observedEntity;
[Signal] public delegate void ThresholdReachedEventHandler();
public override void _Ready()
{
_observedEntity.OnHPChanged += OnHPChanged;
}
private void OnHPChanged(EntitySignalContext context)
{
if (_setGreater == false && _observedEntity.HP / _observedEntity.MaxHP <= _threshold)
{
EmitSignal(SignalName.ThresholdReached);
_observedEntity.OnHPChanged -= OnHPChanged;
QueueFree();
}
else if (_setGreater && _observedEntity.HP / _observedEntity.MaxHP >= _threshold)
{
EmitSignal(SignalName.ThresholdReached);
_observedEntity.OnHPChanged -= OnHPChanged;
QueueFree();
}
}
}