Ejemplo n.º 1
0
 internal static StateConfiguration <TState, TTrigger> PermitDynamic <TArgument, TState, TTrigger>(
     StateConfiguration <TState, TTrigger> config, ParameterizedTrigger <TTrigger, TArgument> trigger,
     Func <TArgument, DynamicState <TState> > targetStatePredicate,
     Action <Transition <TState, TTrigger>, TArgument> onTriggerAction)
 {
     return(PermitDynamicCore(config, trigger.Trigger, targetStatePredicate, onTriggerAction));
 }
Ejemplo n.º 2
0
 internal static StateConfiguration <TState, TTrigger> Permit <TArgument, TState, TTrigger>(
     StateConfiguration <TState, TTrigger> config, Func <bool> predicate,
     ParameterizedTrigger <TTrigger, TArgument> trigger, TState resultingState,
     Action <Transition <TState, TTrigger>, TArgument> onTriggerAction)
 {
     return(PermitCore(config, predicate, trigger.Trigger, resultingState, onTriggerAction));
 }
Ejemplo n.º 3
0
        internal static StateConfiguration <TState, TTrigger> Ignore <TState, TTrigger>(
            StateConfiguration <TState, TTrigger> config, Func <bool> predicate, TTrigger trigger)
        {
            Contract.NotNull(trigger != null, nameof(trigger));

            if (
                StateConfigurationHelper.FindTriggerRepresentation(trigger,
                                                                   config.CurrentStateRepresentation) != null)
            {
                ExceptionHelper.ThrowExclusiveOperation();
            }

            var rep = StateConfigurationHelper.CreateTriggerRepresentation(trigger,
                                                                           config.CurrentStateRepresentation);

            rep.NextStateRepresentationWrapper = null;
            rep.ConditionalTriggerPredicate    = predicate;

            return(config);
        }
Ejemplo n.º 4
0
        private static StateConfiguration <TState, TTrigger> PermitCore <TState, TTrigger>(
            StateConfiguration <TState, TTrigger> config, Func <bool> predicate, TTrigger trigger,
            TState resultingState, object onTriggerAction)
        {
            Contract.NotNull(trigger != null, nameof(trigger));
            Contract.NotNull(resultingState != null, nameof(resultingState));

            if (StateConfigurationHelper.FindTriggerRepresentation(trigger, config.CurrentStateRepresentation) !=
                null)
            {
                ExceptionHelper.ThrowExclusiveOperation();
            }

            var rep = StateConfigurationHelper.CreateTriggerRepresentation(trigger,
                                                                           config.CurrentStateRepresentation);

            rep.NextStateRepresentationWrapper = StateConfigurationHelper.FindOrCreateStateRepresentation(
                resultingState, config.Representations);
            rep.OnTriggerAction             = onTriggerAction;
            rep.ConditionalTriggerPredicate = predicate;

            return(config);
        }
Ejemplo n.º 5
0
        private static StateConfiguration <TState, TTrigger> PermitDynamicCore <TState, TTrigger>(
            StateConfiguration <TState, TTrigger> config, TTrigger trigger,
            object targetStatePredicate, object onTriggerAction)
        {
            Contract.NotNull(trigger != null, nameof(trigger));
            Contract.NotNull(targetStatePredicate != null, nameof(targetStatePredicate));

            if (
                StateConfigurationHelper.FindTriggerRepresentation(trigger,
                                                                   config.CurrentStateRepresentation) != null)
            {
                ExceptionHelper.ThrowExclusiveOperation();
            }

            var rep = StateConfigurationHelper.CreateTriggerRepresentation(trigger,
                                                                           config.CurrentStateRepresentation);

            rep.NextStateRepresentationWrapper = targetStatePredicate;
            rep.OnTriggerAction             = onTriggerAction;
            rep.ConditionalTriggerPredicate = null;
            rep.TransitionFlags            |= TransitionFlag.DynamicState;

            return(config);
        }
Ejemplo n.º 6
0
 internal static StateConfiguration <TState, TTrigger> PermitDynamic <TState, TTrigger>(
     StateConfiguration <TState, TTrigger> config, TTrigger trigger,
     Func <DynamicState <TState> > targetStatePredicate, Action <Transition <TState, TTrigger> > onTriggerAction)
 {
     return(PermitDynamicCore(config, trigger, targetStatePredicate, onTriggerAction));
 }
Ejemplo n.º 7
0
 internal static StateConfiguration <TState, TTrigger> Permit <TState, TTrigger>(
     StateConfiguration <TState, TTrigger> config, Func <bool> predicate, TTrigger trigger,
     TState resultingState, Action <Transition <TState, TTrigger> > onTriggerAction)
 {
     return(PermitCore(config, predicate, trigger, resultingState, onTriggerAction));
 }
Ejemplo n.º 8
0
 internal static StateConfiguration <TState, TTrigger> OnExit <TState, TTrigger>(
     StateConfiguration <TState, TTrigger> config, Action <Transition <TState, TTrigger> > action)
 {
     config.CurrentStateRepresentation.OnExitAction = action;
     return(config);
 }