/// <summary> /// Signalisiert ein Event, welches den Status der Statusmaschine beeinflussen kann. Der Status wird wenn nötig /// angepasst. Diese Methode enthält die Logik über die möglichen Statusübergänge. /// </summary> /// <returns>true, wenn eine Änderung erfolgt ist.</returns> /// <param name="NewEvent">Das aufgetretene Ereignis.</param> public virtual bool SetEvent(int transition) { bool changed = false; RuleSet.State newState = currentState.GetTransitionTarget(Convert.ToInt32(transition)); if(null != newState) { currentState = newState; changed = true; } return changed; }
/// <summary> /// Setzt den Zustand der Statusmaschine zurück. /// </summary> public void ResetState() { currentState = this.ruleSet.InitialState; }
/// <summary> /// Konstruktor, welcher den aktuellen Status übernimmt. /// </summary> /// <param name="ruleSet">Regelwerk für die Übergänge zwischen den einzelnen Stati</param> /// <param name="currentState">Aktuellen Status</param> public StateMachine(RuleSet ruleSet, RuleSet.State currentState) { this.ruleSet = ruleSet; this.currentState = currentState; }