16 lines
		
	
	
		
			594 B
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			16 lines
		
	
	
		
			594 B
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Linq;
 | 
						|
 | 
						|
namespace Engine.Systems.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());
 | 
						|
}
 |