88 lines
1.6 KiB
C#
88 lines
1.6 KiB
C#
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
|
|
);
|
|
}
|