private async Task MoveNextAsync(NextStateKind nextStateKind, CancellationToken cancellationToken) { if (_stateNode.NextStateKind != nextStateKind) { return; } _stateContext.StateMachineContext.MoveTo(_stateNode.DefaultState.StateNode.StateName); foreach (var ifState in _stateNode.IfStates) { if (await ifState.Condition(_stateContext, cancellationToken)) { _stateContext.StateMachineContext.MoveTo(ifState.StateNode.StateName); break; } } }
public (StateNode IfState, StateNode IfState1, StateNode IfState2, StateNode IfState3, StateNode IfState4, StateNode DefaultState) SetNext(NextStateKind nextStateKind, IfState ifState, IfState ifState1, IfState ifState2, IfState ifState3, IfState ifState4, DefaultState defaultState) { SetNextInternal(nextStateKind, defaultState, ifState, ifState1, ifState2, ifState3, ifState4); return(ifState.StateNode, ifState1.StateNode, ifState2.StateNode, ifState3.StateNode, ifState4.StateNode, defaultState.StateNode); }
public StateNode SetNext(NextStateKind nextStateKind, DefaultState defaultState) { SetNextInternal(nextStateKind, defaultState); return(DefaultState.StateNode); }
public (StateNode IfState, StateNode IfState1, StateNode DefaultState) SetNext(NextStateKind nextStateKind, IfState ifState, IfState ifState1, DefaultState defaultState) { SetNextInternal(nextStateKind, defaultState, ifState, ifState1); return(ifState.StateNode, ifState1.StateNode, defaultState.StateNode); }
private void SetNextInternal(NextStateKind nextStateKind, DefaultState defaultState, params IfState[] ifStates) { NextStateKind = nextStateKind; DefaultState = defaultState; IfStates = ifStates.ToList(); }