public void CreateFsmMachine(AbsEntity entity, string name,
                                     List <AbsState> stateList, AbsState defaultState, List <AbsTransition> transitionList)
        {
            StateMachine fsm = new StateMachine(entity, name, stateList, defaultState, transitionList);

            _fsmDict.Add(entity, fsm);
        }
 public StateMachineTransitionState ExcuteTrans(AbsState formState, AbsState toState)
 {
     FromState   = formState;
     ToState     = toState;
     _transState = ExcuteTransEx();
     return(_transState);
 }
 public AbsTransition(StateMachine machine, string name, AbsState formState, AbsState toState)
 {
     Name        = name;
     Entity      = machine.Entity;
     Machine     = machine;
     _transState = StateMachineTransitionState.Ready;
     FromState   = formState;
     ToState     = toState;
 }
Example #4
0
 public StateMachine(AbsEntity entity, string name,
                     List <AbsState> stateList, AbsState defaultState, List <AbsTransition> transitionList)
 {
     Enable = false;
     Name   = name;
     Entity = entity;
     _stateList.Clear();
     _transitionList.Clear();
     _stateList      = stateList;
     _defaultState   = defaultState;
     CurTrans        = null;
     CurrentState    = _defaultState;
     _transitionList = transitionList;
 }
Example #5
0
 public bool OnChangeState(AbsState fromState, AbsState toState)
 {
     if (CurTrans == null)
     {
         foreach (var target in TransitionList)
         {
             if (target.FromState == fromState && target.ToState == toState && target.TransState == StateMachineTransitionState.Finish && target.IsCanTrans())
             {
                 CurTrans = target;
                 return(true);
             }
         }
     }
     return(false);
 }
Example #6
0
 protected virtual void OnExitStateEx(AbsState nextState)
 {
 }
Example #7
0
 private void OnExitState(AbsState nextState)
 {
     OnExitStateEx(nextState);
 }
Example #8
0
 protected virtual void OnEnterStateEx(AbsState lastState)
 {
 }
Example #9
0
 private void OnEnterState(AbsState lastState)
 {
     OnEnterStateEx(lastState);
     Machine.CurrentState = this;
 }