qstbak/Questionable/Questionable.Controller.Steps.Common/WaitCondition.cs
2025-10-09 07:47:19 +10:00

42 lines
827 B
C#

using System;
namespace Questionable.Controller.Steps.Common;
internal static class WaitCondition
{
internal sealed record Task(Func<bool> Predicate, string Description) : ITask
{
public override string ToString()
{
return Description;
}
}
internal sealed class WaitConditionExecutor : TaskExecutor<Task>
{
private DateTime _continueAt = DateTime.MaxValue;
protected override bool Start()
{
return !base.Task.Predicate();
}
public override ETaskResult Update()
{
if (_continueAt == DateTime.MaxValue && base.Task.Predicate())
{
_continueAt = DateTime.Now.AddSeconds(0.5);
}
if (!(DateTime.Now >= _continueAt))
{
return ETaskResult.StillRunning;
}
return ETaskResult.TaskComplete;
}
public override bool ShouldInterruptOnDamage()
{
return false;
}
}
}