37 lines
1017 B
C#
37 lines
1017 B
C#
namespace Syntriax.Engine.Core;
|
|
|
|
public class ProgressionTracker : IProgressionTracker
|
|
{
|
|
public Event<IReadOnlyProgressionTracker, IReadOnlyProgressionTracker.ProgressionUpdatedArguments> OnUpdated { get; } = new();
|
|
public Event<IReadOnlyProgressionTracker> OnEnded { get; } = new();
|
|
|
|
public float Progression { get; private set; } = 0f;
|
|
public string Status { get; private set; } = "Default";
|
|
|
|
void IProgressionTracker.Set(float progression, string status)
|
|
{
|
|
if (Progression >= 1f)
|
|
return;
|
|
|
|
float previousProgression = Progression;
|
|
string previousStatus = Status;
|
|
|
|
Progression = progression.Clamp(Progression, 1f);
|
|
Status = status;
|
|
|
|
OnUpdated?.Invoke(this, new(previousProgression, previousStatus));
|
|
|
|
if (progression >= 1f)
|
|
OnEnded?.Invoke(this);
|
|
}
|
|
|
|
void IProgressionTracker.Reset()
|
|
{
|
|
Progression = 0f;
|
|
Status = "Default";
|
|
|
|
OnUpdated.Clear();
|
|
OnEnded.Clear();
|
|
}
|
|
}
|