예제 #1
0
파일: StateMachine.cs 프로젝트: antgraf/BA
 public StateMachine(State initialState)
 {
     pCurrentSubState = initialState;
     pActivationTimer.AutoReset = true;
     pActivationTimer.Elapsed += PActivationTimerElapsed;
     pActivationTimer.Start();
 }
예제 #2
0
파일: State.cs 프로젝트: antgraf/BA
 public virtual State HandleEvent(int eventId)
 {
     // TODO add events
     State newState = null;
     try
     {
         newState = HandleEventCustom(eventId);
     }
     catch(Exception e)
     {
         HandleError(e);
     }
     if(newState == null)
     {
         newState = _HandleEvent(eventId);
     }
     if(newState == null && pCurrentSubState != null)
     {
         State newSubState = pCurrentSubState.HandleEvent(eventId);
         if(newSubState != null)
         {
             ChangeSubState(pCurrentSubState, newSubState);
             pCurrentSubState = newSubState;
         }
     }
     return newState;
 }
예제 #3
0
파일: State.cs 프로젝트: antgraf/BA
 private void ChangeSubState(State from, State to)
 {
     // TODO add events
     from._Leave();
     pCurrentSubState = to;
     to._Enter();
 }