public Transition(eTurnstileState start_state, eTurnstileState end_state, eTurnstileEvent event_trigger, Action action) { StartState = start_state; EndState = end_state; EventTrigger = event_trigger; Action = action; }
/// <summary> /// 状态事件解释引擎 /// </summary> /// <param name="e"></param> public void HandleEvent(eTurnstileEvent e) { foreach (var transition in _transitions) { if (State == transition.StartState && e == transition.EventTrigger) { transition.Action(); State = transition.EndState; } } }
private void AddTransition(eTurnstileState start, eTurnstileState end, eTurnstileEvent e, Action action) { _transitions.Add(new Transition(start, end, e, action)); }