Exemplo n.º 1
0
 /// <summary>
 /// Initialize by StateMachineDefinition instance.
 /// </summary>
 /// <param name="def">StateMachineDefinition instance</param>
 /// <param name="logger">the logger used to</param>
 /// <param name="actionInitializer"></param>
 public void Initialize(StateMachineDefinition def, Func <IAction, IAction> actionInitializer)
 {
     _actionBuilder = new ActionBuilder(def.ActionPackage, actionInitializer);
     foreach (StateDefinition stateDef in def.States)
     {
         CLRLogger.GetInstance().LogDevInfo(string.Format("Load State {0}", stateDef.ID));
         State state = new State(_actionBuilder);
         state.Initialize(stateDef);
         if (States.Contains(state))
         {
             throw new StateMachineException(string.Format("try to add an existed state {0}", state.ID));
         }
         States.Add(state);
         if (state.Category == StateCategory.INITIAL)
         {
             CurrentState = state;
         }
     }
     foreach (TransitionDefinition tranDef in def.Transitions)
     {
         LoadTransaction(tranDef);
     }
 }
Exemplo n.º 2
0
 public State(ActionBuilder actionBuilder)
 {
     Category       = StateCategory.NORMAL;
     _actionBuilder = actionBuilder;
 }