37 lines
1001 B
C#
37 lines
1001 B
C#
namespace Syntriax.Engine.Core;
|
|
|
|
public class ProgressionTracker : IProgressionTracker
|
|
{
|
|
public event IReadOnlyProgressionTracker.ProgressionUpdatedEventHandler? OnUpdated = null;
|
|
public event IReadOnlyProgressionTracker.ProgressionEndedEventHandler? OnEnded = null;
|
|
|
|
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?.InvokeSafe(this, previousProgression, previousStatus);
|
|
|
|
if (progression >= 1f)
|
|
OnEnded?.InvokeSafe(this);
|
|
}
|
|
|
|
void IProgressionTracker.Reset()
|
|
{
|
|
Progression = 0f;
|
|
Status = "Default";
|
|
|
|
OnUpdated = null;
|
|
OnEnded = null;
|
|
}
|
|
}
|