private void EnforceNotIdentityTransition(TStateType destination) { if (destination.Equals(_specification.UnderlyingState)) { throw new ArgumentException("Cannot transition to same state."); } }
private StateSpecifier InternalPermitIf(TTriggerType trigger, TStateType destinationState, Func <bool> triggerCondition) { _specification.AddTriggerStrategy(new StateTransitionTriggerStrategy(trigger, destinationState, triggerCondition)); return(this); }
public StateSpecifier SubstateOf(TStateType superstate) { var superRepresentation = _specificationLookup(superstate); _specification.Superstate = superRepresentation; superRepresentation.AddSubstate(_specification); return(this); }
public override bool ResultsInTransitionFrom(TStateType source, object[] args, out TStateType destination) { destination = _destination(args); return(true); }
public State(FSM <TStateType> fsm, TStateType stateType) { _fsm = fsm; StateType = stateType; }
public StateTransition(TStateType source, TStateType destination, TTriggerType trigger) { _source = source; _destination = destination; _trigger = trigger; }
public abstract bool ResultsInTransitionFrom(TStateType source, object[] args, out TStateType destination);
public StateSpecifier PermitIf(TTriggerType trigger, TStateType destinationState, Func <bool> triggerCondition) { EnforceNotIdentityTransition(destinationState); return(InternalPermitIf(trigger, destinationState, triggerCondition)); }
public StateSpecifier Permit(TTriggerType trigger, TStateType destinationState) { EnforceNotIdentityTransition(destinationState); return(InternalPermit(trigger, destinationState)); }
private StateSpecifier InternalPermit(TTriggerType trigger, TStateType destinationState) { return(InternalPermitIf(trigger, destinationState, () => true)); }
public override bool ResultsInTransitionFrom(TStateType source, object[] args, out TStateType destination) { destination = default(TStateType); return(false); }
public StateTransitionTriggerStrategy(TTriggerType trigger, TStateType destination, Func <bool> triggerCondition) : base(trigger, triggerCondition) { _destination = destination; }
public StateSpecification(TStateType state) { _state = state; }
public bool IsIncludedIn(TStateType state) { return (_state.Equals(state) || (_superstate != null && _superstate.IsIncludedIn(state))); }
public bool Includes(TStateType state) { return(_state.Equals(state) || _substates.Any(s => s.Includes(state))); }