12 lines
527 B
C#

namespace Syntriax.Engine.StateMachine;
public readonly record struct StateTransition(IState State, IReadOnlyList<Func<bool>> Conditions)
{
public static implicit operator (IState state, IReadOnlyList<Func<bool>> conditions)(StateTransition value)
=> (value.State, value.Conditions);
public static implicit operator StateTransition((IState state, IReadOnlyList<Func<bool>> conditions) value)
=> new(value.state, value.conditions);
public bool CanTransition => !Conditions.Any(c => !c.Invoke());
}