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; } }