Resource provider

This commit is contained in:
Marco 2025-02-20 14:09:42 +01:00
commit ba21b30a4d
3 changed files with 58 additions and 2 deletions

View file

@ -0,0 +1,51 @@
using Godot;
namespace Cirno.Scripts.Components.Actors;
public partial class ActorResourceProvider : Node2D
{
[Export]
public string ResourceName { get; private set; }
[Export]
public float MaxResource { get; set; } = 10f;
private float _currentResource = 0f;
[Signal]
public delegate void ResourceChangedEventHandler(float newValue, float maxValue);
[Signal]
public delegate void ResourceMaxedEventHandler(float maxValue);
[Signal]
public delegate void ResourceDepletedEventHandler();
public float CurrentResource
{
get => _currentResource;
set
{
if (_currentResource != value)
{
_currentResource = value;
if (_currentResource > MaxResource) {
_currentResource = MaxResource;
EmitSignal(SignalName.ResourceMaxed, MaxResource);
}
else if (_currentResource <= 0)
{
EmitSignal(SignalName.ResourceDepleted);
}
EmitSignal(SignalName.ResourceChanged, _currentResource, MaxResource);
}
}
}
public void FillResource()
{
CurrentResource = MaxResource;
}
}