Exemplo n.º 1
0
 private static void exportSubGraphNode(StringBuilder dotGraph, StateDetails <TState, TTrigger> state)
 {
     dotGraph.Append($"{createIndent(state.StateLevel + 1)}{state.State} ");
     dotGraph.AppendLine(state.TransitionsFrom.Any(t => t.ToState?.SuperState == state)
         ? "[shape=circle label=\"\" style=filled color=black]"
         : "[shape=point color=white];");
 }
Exemplo n.º 2
0
        public StateDetails <TState, TTrigger> AddSubState(StateDetails <TState, TTrigger> subStateDetails)
        {
            if (_subStates.Contains(subStateDetails))
            {
                return(this);
            }

            _subStates.Add(subStateDetails);
            subStateDetails.AddSuperState(this);

            return(this);
        }
Exemplo n.º 3
0
        public StateDetails <TState, TTrigger> AddSubState(StateDetails <TState, TTrigger> subStateDetails)
        {
            if (_subStates.Contains(subStateDetails))
            {
                return(this);
            }

            //!!!
            Console.WriteLine($"adding {subStateDetails.State} as subState of {State}");
            _subStates.Add(subStateDetails);
            subStateDetails.AddSuperState(this);

            return(this);
        }
Exemplo n.º 4
0
 public TransitionDetails(string name
                          , StateDetails <TState, TTrigger> fromState
                          , TTrigger trigger
                          , StateDetails <TState, TTrigger> toState = null
                          , bool hasCondition = false
                          , uint priority     = 1
                          , bool isDynamic    = false)
 {
     Name         = name;
     FromState    = fromState;
     Trigger      = trigger;
     ToState      = toState;
     HasCondition = hasCondition;
     Priority     = priority;
     IsDynamic    = isDynamic;
 }
Exemplo n.º 5
0
        public TransitionDetails <TState, TTrigger> CreateTransitionFrom(string name
                                                                         , TTrigger trigger
                                                                         , StateDetails <TState, TTrigger> toState = null
                                                                         , bool hasCondition = false
                                                                         , uint priority     = 1
                                                                         , bool isDynamic    = false)
        {
            var transition = new TransitionDetails <TState, TTrigger>(name
                                                                      , this
                                                                      , trigger
                                                                      , toState
                                                                      , hasCondition
                                                                      , priority
                                                                      , isDynamic);

            AddTransition(transition);

            return(transition);
        }
Exemplo n.º 6
0
        public StateDetails <TState, TTrigger> AddSuperState(StateDetails <TState, TTrigger> superStateDetails)
        {
            if (SuperState != null)
            {
                if (SuperState != superStateDetails)
                {
                    throw new InvalidOperationException($"State '{State}' already has a super state of '{SuperState.State}'.");
                }
            }
            else
            {
                SuperState    = superStateDetails;
                HasSuperState = true;

                superStateDetails.AddSubState(this);
            }

            return(this);
        }
Exemplo n.º 7
0
        public TransitionDetails <TState, TTrigger> CreateTransitionTo(string name
                                                                       , StateDetails <TState, TTrigger> fromState
                                                                       , TTrigger trigger
                                                                       , bool hasCondition = false
                                                                       , uint priority     = 1
                                                                       , bool isDynamic    = false)
        {
            var transition = new TransitionDetails <TState, TTrigger>(name
                                                                      , fromState
                                                                      , trigger
                                                                      , this
                                                                      , hasCondition
                                                                      , priority
                                                                      , isDynamic);

            addTransition(transition);

            return(transition);
        }