48 lines
1.2 KiB
C#
48 lines
1.2 KiB
C#
using System.Collections;
|
|
using AutoAgent.Domain.Models;
|
|
|
|
namespace AutoAgent.Domain.Utils
|
|
{
|
|
public class DelayGenerator : ISequenceGenerator<Delay>
|
|
{
|
|
private ISequenceGenerator<int> _generator;
|
|
|
|
public Delay Min { get => new Delay { Value = _generator.Min }; }
|
|
public Delay Max { get => new Delay { Value = _generator.Max }; }
|
|
public double Progress { get => _generator.Progress; }
|
|
public double Step { get => _generator.Step; }
|
|
public bool HasValues { get => _generator.HasValues; }
|
|
|
|
public Delay Next()
|
|
{
|
|
if (!HasValues)
|
|
{
|
|
Reset();
|
|
}
|
|
return new Delay { Value = _generator.Next() };
|
|
}
|
|
|
|
public ISequenceGenerator<Delay> Reset()
|
|
{
|
|
_generator.Reset();
|
|
return this;
|
|
}
|
|
|
|
public DelayGenerator(ISequenceGenerator<int> generator)
|
|
{
|
|
_generator = generator;
|
|
}
|
|
public IEnumerator<Delay> GetEnumerator()
|
|
{
|
|
while (HasValues)
|
|
{
|
|
yield return Next();
|
|
}
|
|
}
|
|
IEnumerator IEnumerable.GetEnumerator()
|
|
{
|
|
return GetEnumerator();
|
|
}
|
|
}
|
|
}
|