Armor observer
This commit is contained in:
parent
48a22dd956
commit
cab8bd12f9
5 changed files with 80 additions and 23 deletions
32
scripts/ArmorHPObserver.cs
Normal file
32
scripts/ArmorHPObserver.cs
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
using Godot;
|
||||
|
||||
namespace Newlon.Components;
|
||||
|
||||
public partial class ArmorHPObserver : Node
|
||||
{
|
||||
[Export] private float _threshold = 0.5f;
|
||||
[Export] private bool _setGreater = false;
|
||||
[Export] private Armor _observedArmor;
|
||||
[Signal] public delegate void ThresholdReachedEventHandler();
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_observedArmor.ArmorDamaged += OnHPChanged;
|
||||
}
|
||||
|
||||
private void OnHPChanged(float delta)
|
||||
{
|
||||
if (_setGreater == false && _observedArmor._hp / _observedArmor.MaxHP < _threshold)
|
||||
{
|
||||
EmitSignal(SignalName.ThresholdReached);
|
||||
_observedArmor.ArmorDamaged -= OnHPChanged;
|
||||
QueueFree();
|
||||
}
|
||||
else if (_setGreater && _observedArmor._hp / _observedArmor.MaxHP > _threshold)
|
||||
{
|
||||
EmitSignal(SignalName.ThresholdReached);
|
||||
_observedArmor.ArmorDamaged -= OnHPChanged;
|
||||
QueueFree();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue