refactor party
This commit is contained in:
87
Ceo.cs
Normal file
87
Ceo.cs
Normal file
@@ -0,0 +1,87 @@
|
||||
using Godot;
|
||||
|
||||
namespace Game;
|
||||
|
||||
[GlobalClass]
|
||||
public partial class Ceo : Resource
|
||||
{
|
||||
private float _competence = 50;
|
||||
private float _energy = 100;
|
||||
private float _insanity;
|
||||
private float _maxEnergy = 100;
|
||||
private string _name = "";
|
||||
|
||||
[Export]
|
||||
public string Name
|
||||
{
|
||||
get => _name;
|
||||
set
|
||||
{
|
||||
_name = value;
|
||||
EmitCeoStatusChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[Export]
|
||||
public float Energy
|
||||
{
|
||||
get => _energy;
|
||||
set
|
||||
{
|
||||
_energy = Mathf.Clamp(value, 0, MaxEnergy);
|
||||
EmitCeoStatusChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[Export]
|
||||
public float MaxEnergy
|
||||
{
|
||||
get => _maxEnergy;
|
||||
set
|
||||
{
|
||||
_maxEnergy = Mathf.Max(value, 0);
|
||||
_energy = Mathf.Min(_energy, _maxEnergy);
|
||||
EmitCeoStatusChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[Export]
|
||||
public float Insanity
|
||||
{
|
||||
get => _insanity;
|
||||
set
|
||||
{
|
||||
_insanity = value;
|
||||
EmitCeoStatusChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[Export]
|
||||
public float Competence
|
||||
{
|
||||
get => _competence;
|
||||
set
|
||||
{
|
||||
_competence = value;
|
||||
EmitCeoStatusChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private void EmitCeoStatusChanged()
|
||||
{
|
||||
EventBus.CeoChanged.Invoke(ToCeoStats());
|
||||
}
|
||||
|
||||
public CeoStats ToCeoStats()
|
||||
{
|
||||
return new CeoStats(Name, Energy, MaxEnergy, Insanity, Competence);
|
||||
}
|
||||
|
||||
public record CeoStats(
|
||||
string Name,
|
||||
float Energy,
|
||||
float MaxEnergy,
|
||||
float Insanity,
|
||||
float Competence
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user