コード例 #1
0
ファイル: FSMBuilder.cs プロジェクト: gmich/Gem
 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;
 }
コード例 #2
0
ファイル: FSMBuilder.cs プロジェクト: gmich/Gem
        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);
        }
コード例 #3
0
ファイル: Transition.cs プロジェクト: gmich/Gem
        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;
        }
コード例 #4
0
ファイル: AState.cs プロジェクト: gmich/Gem
 internal void AddAdjacent(AState <TContext> state)
 {
     adjacentStates.Add(state);
 }