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