Delay start for animation

This commit is contained in:
Marco 2025-03-03 10:58:20 +01:00
commit a9a7b234fb
9 changed files with 108 additions and 23 deletions

View file

@ -15,6 +15,12 @@ public partial class ActorResourceProvider : Node2D
[Signal]
public delegate void ResourceChangedEventHandler(float newValue, float maxValue);
[Signal]
public delegate void ResourceIncreasedEventHandler(float oldValue, float newValue, float maxValue);
[Signal]
public delegate void ResourceDecreasedEventHandler(float oldValue, float newValue, float maxValue);
[Signal]
public delegate void ResourceMaxedEventHandler(float maxValue);
@ -26,21 +32,29 @@ public partial class ActorResourceProvider : Node2D
get => _currentResource;
set
{
if (_currentResource != value)
if (_currentResource == value) return;
if (value > _currentResource)
{
_currentResource = value;
if (_currentResource >= MaxResource) {
_currentResource = MaxResource;
EmitSignal(SignalName.ResourceMaxed, MaxResource);
}
else if (_currentResource <= 0)
{
EmitSignal(SignalName.ResourceDepleted);
}
EmitSignal(SignalName.ResourceChanged, _currentResource, MaxResource);
EmitSignal(SignalName.ResourceIncreased, _currentResource, value, MaxResource);
}
else if (value < _currentResource)
{
EmitSignal(SignalName.ResourceDecreased, _currentResource, value, MaxResource);
}
_currentResource = value;
if (_currentResource >= MaxResource) {
_currentResource = MaxResource;
EmitSignal(SignalName.ResourceMaxed, MaxResource);
}
else if (_currentResource <= 0)
{
EmitSignal(SignalName.ResourceDepleted);
}
EmitSignal(SignalName.ResourceChanged, _currentResource, MaxResource);
}
}

View file

@ -18,9 +18,13 @@ public partial class PlayerDamageReceiver : Area2D
[Signal]
public delegate void HealthChangedEventHandler(float newValue, float maxValue);
[Signal]
public delegate void HealthDecreasedEventHandler(float value, float newValue, float maxValue);
[Signal]
public delegate void ShieldChangedEventHandler(float newValue, float maxValue);
[Signal]
public delegate void ShieldDecreasedEventHandler(float value, float newValue, float maxValue);
[Signal]
public delegate void DeathEventHandler();
@ -42,12 +46,24 @@ public partial class PlayerDamageReceiver : Area2D
_healthProvider.ResourceChanged += ((value, maxValue) =>
{
//if (!Enabled) return;
Hud.Instance?.UpdateHealth(value, maxValue);
EmitSignal(SignalName.HealthChanged, value, maxValue);
});
_healthProvider.ResourceDecreased += (value, newValue, maxValue) =>
{
EmitSignal(SignalName.HealthDecreased, value, newValue, maxValue);
};
_shieldProvider.ResourceDecreased += (value, newValue, maxValue) =>
{
EmitSignal(SignalName.ShieldDecreased, value, newValue, maxValue);
};
_shieldProvider.ResourceChanged += ((value, maxValue) =>
{
//if (!Enabled) return;
Hud.Instance?.UpdateShield(value, maxValue);
EmitSignal(SignalName.ShieldChanged, value, maxValue);
});