public FiniteStateMachine(TState initialState, List <TState> states, ITransitionMechanism <TState, TAction> transitionMechanism, List <TState> acceptedStates, MissingTransitionActionBehaviour behaviour = MissingTransitionActionBehaviour.Ignore) { if (!states.Contains(initialState)) { throw new ArgumentException("The initial state must be an element of the set of states.", nameof(initialState)); } if (acceptedStates.Except(states).Any()) { throw new ArgumentException("Accpedted states must be a subset of the set of states.", nameof(acceptedStates)); } InitialState = initialState; States = states; TransitionMechanism = transitionMechanism; AcceptedStates = acceptedStates; Behaviour = behaviour; ResetState(); ResetHistory(); }
public FiniteStateMachine(TState initialState, List <TState> states, ITransitionMechanism <TState, TAction> transitionMechanism, MissingTransitionActionBehaviour behaviour = MissingTransitionActionBehaviour.Ignore) : this(initialState, states, transitionMechanism, new List <TState>(), behaviour) { }