public EventBuilder( AState <TContext> current, Func <string, AState <TContext> > stateGetter, Func <AState <TContext> > currentStateGetter, Action <AState <TContext> > stateSetter) { this.stateSetter = stateSetter; this.stateGetter = stateGetter; this.currentStateGetter = currentStateGetter; this.current = current; }
public FSMBuilder <TContext> AddState(string stateId, AState <TContext> state) { Argument.Require.NotNullOrEmpty(() => stateId); Argument.Require.NotNull(() => state); if (states.ContainsKey(stateId)) { throw new FSMException($"A state with id: {stateId} has already been added."); } states.Add(stateId, state); return(this); }
public Transition( AState <TContext> validStateForTransition, Func <AState <TContext> > nextState, Func <AState <TContext> > currentState, Action <AState <TContext> > stateSetter) { Argument.Require.NotNull(() => validStateForTransition); Argument.Require.NotNull(() => nextState); Argument.Require.NotNull(() => currentState); Argument.Require.NotNull(() => stateSetter); this.validStateForTransition = validStateForTransition; this.nextState = nextState; this.currentState = currentState; this.stateSetter = stateSetter; }
internal void AddAdjacent(AState <TContext> state) { adjacentStates.Add(state); }