Neg_Utils/Timing/AutoTimeMachine.cs
2024-02-12 21:26:24 +01:00

32 lines
887 B
C#

using JetBrains.Annotations;
using System;
namespace NEG.Utils.Timing
{
public class AutoTimeMachine
{
private readonly TimeMachine machine;
public AutoTimeMachine(Action action, double interval)
{
Action = action;
Interval = interval;
machine = new TimeMachine();
}
[PublicAPI] public double Interval { get; set; }
[PublicAPI] public Action Action { get; }
/// <summary>
/// Forwards the time by given amount, triggers assigned action relevant amount of times
/// </summary>
/// <param name="time">Amount of time to forward by</param>
public void Forward(double time)
{
machine.Accumulate(time);
int rolls = machine.RetrieveAll(Interval);
for (int i = 0; i < rolls; i++) Action();
}
}
}