Пример #1
0
    public StateBuilder(IInnerState <TState, TEvent, TContext> state, StateDictionary <TState, TEvent, TContext> stateDict, IFactory <TState, TEvent, TContext> factory)
    {
        StateDict = stateDict;
        Factory   = factory;

        CurrentState = state;
    }
Пример #2
0
    public ITransition <TState, TEvent, TContext> CreateTransition(TEvent evtId, IInnerState <TState, TEvent, TContext> target)
    {
        var tr = new Transition <TState, TEvent, TContext>();

        tr.Target         = target;
        tr.EventToTrigger = evtId;

        return(tr);
    }
Пример #3
0
    private void SetCurrentState(IInnerState <TState, TEvent, TContext> state, object[] parameters)
    {
        var oldState = _currentState;

        if (oldState != null)
        {
            oldState.Exit(context, parameters);
        }

        _currentState = state;

        if (state != null)
        {
            state.Enter(context, parameters);
        }
    }
Пример #4
0
    public TransitionResult <TState, TEvent, TContext> Fire(TEvent eventId, params object[] paramters)
    {
        bool fired = false;
        IInnerState <TState, TEvent, TContext> toState = null;

        if (transitions != null)
        {
            foreach (var t in transitions)
            {
                if (t.EventToTrigger.Equals(eventId))
                {
                    fired   = true;
                    toState = t.Target;
                }
            }
        }

        return(new TransitionResult <TState, TEvent, TContext>(fired, toState, paramters));
    }
Пример #5
0
    public TransitionResult <TState, TEvent> Fire(TEvent eventId, Hashtable parameters = null)
    {
        bool fired = false;
        IInnerState <TState, TEvent> toState = null;

        if (transitions != null)
        {
            //foreach (var t in transitions)
            for (int i = 0; i < transitions.Count; i++)
            {
                var t = transitions[i];
                if (t.EventToTrigger.Equals(eventId))
                {
                    fired   = true;
                    toState = t.Target;
                }
            }
        }

        return(new TransitionResult <TState, TEvent>(fired, toState));
    }
Пример #6
0
 public TransitionResult(bool fired, IInnerState <TState, TEvent> toState)
 {
     IsFired = fired;
     ToState = toState;
 }
Пример #7
0
 public TransitionResult(bool fired, IInnerState <TState, TEvent, TContext> toState, object[] parameters)
 {
     IsFired    = fired;
     ToState    = toState;
     Parameters = parameters;
 }
Пример #8
0
 public void Initialize(TState stateId)
 {
     isInitialized = true;
     InitialState = stateDict[stateId];
 }
Пример #9
0
 public void Initialize(TState stateId, TContext ctx = null)
 {
     isInitialized = true;
     InitialState  = stateDict[stateId];
     context       = ctx;
 }