mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-12 09:15:54 +00:00
Resource provider
This commit is contained in:
parent
1fbdc3ddd7
commit
ba21b30a4d
3 changed files with 58 additions and 2 deletions
51
Scripts/Components/Actors/ActorResourceProvider.cs
Normal file
51
Scripts/Components/Actors/ActorResourceProvider.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue