Ejemplo n.º 1
0
 /// <summary>
 /// Order of evaluation:
 /// - action given to Accept method
 /// - transition actions
 /// - state actions
 /// </summary>
 /// <param name="input"></param>
 /// <param name="action"></param>
 public void Accept(T input, Action action)
 {
     if (_state.Transitions.Any())
     {
         foreach (var t in _state.Transitions)
         {
             if (t.Evaluate(input))
             {
                 _state = t.Target;
                 action();
                 t.Execute();
                 _state.Execute();
                 return;
             }
         }
     }
     throw new Exception("Can not accept input in state: " + _state.Name);
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Order of evaluation:
 /// - action given to Accept method
 /// - transition actions
 /// - state actions
 /// </summary>
 /// <param name="input"></param>
 /// <param name="action"></param>
 public void Accept(T input, Action action)
 {
     if (_state.Transitions.Any())
     {
         foreach (var t in _state.Transitions)
         {
             // Allow more spirits in here
             Thread.Sleep(2000);
             if (t.Evaluate(input))
             {
                 _state = t.Target;
                 action();
                 t.Execute();
                 _state.Execute();
                 return;
             }
         }
     }
     throw new Exception("Can not accept input in state: " + _state.Name);
 }
Ejemplo n.º 3
0
 public Transition(Func <T, bool> predicate, State <T> targetState, params Action[] actions)
 {
     _p           = predicate;
     _targetState = targetState;
     _actions.AddRange(actions);
 }
Ejemplo n.º 4
0
 public Automaton(IAmState <T> startState)
 {
     _state = startState;
 }
Ejemplo n.º 5
0
 public DelayedAutomaton(IAmState <T> startState)
 {
     _state = startState;
 }