Exemplo n.º 1
0
 private StateSpecifier InternalPermitIf(TTriggerType trigger, TStateType destinationState,
                                         Func <bool> triggerCondition)
 {
     _specification.AddTriggerStrategy(new StateTransitionTriggerStrategy(trigger, destinationState,
                                                                          triggerCondition));
     return(this);
 }
Exemplo n.º 2
0
 private StateSpecifier PermitIfInternal(TTriggerType trigger,
                                         Func <object[], TStateType> destinationStateSelector,
                                         Func <bool> triggerCondition)
 {
     _specification.AddTriggerStrategy(new DestinationFunctionTriggerStrategy(trigger,
                                                                              destinationStateSelector,
                                                                              triggerCondition));
     return(this);
 }
Exemplo n.º 3
0
 public void AddEntryAction(TTriggerType trigger, Action <StateTransition, object[]> action)
 {
     _entryActions.Add((t, args) =>
     {
         if (t.Trigger.Equals(trigger))
         {
             action(t, args);
         }
     });
 }
Exemplo n.º 4
0
            private bool HasLocalHandlerFor(TTriggerType trigger, out TriggerStrategy handler)
            {
                ICollection <TriggerStrategy> possible;

                if (!_triggerStrategies.TryGetValue(trigger, out possible))
                {
                    handler = null;
                    return(false);
                }

                var actual = possible.Where(at => at.ConditionPositive).ToArray();

                if (actual.Count() > 1)
                {
                    throw new InvalidOperationException(
                              string.Format("Ambiguous trigger transition on trigger {0} on state {1}",
                                            trigger, _state));
                }

                handler = actual.FirstOrDefault();
                return(handler != null);
            }
Exemplo n.º 5
0
 private StateSpecifier InternalPermitDynamic(TTriggerType trigger,
                                              Func <object[], TStateType> destinationStateSelector)
 {
     return(PermitIfInternal(trigger, destinationStateSelector, Promiscuous));
 }
Exemplo n.º 6
0
 public override void Trigger(TTriggerType trigger, TTriggerData data)
 {
     Universe.GetComponents <TComponent>()
     .ForAll(component => OnTrigger(trigger, data, component as TComponent));
 }
Exemplo n.º 7
0
 public StateTransition(TStateType source, TStateType destination, TTriggerType trigger)
 {
     _source      = source;
     _destination = destination;
     _trigger     = trigger;
 }
Exemplo n.º 8
0
 public StateSpecifier OnEntryFrom(TTriggerType trigger, Action <StateTransition> entryAction)
 {
     _specification.AddEntryAction(trigger, (t, args) => entryAction(t));
     return(this);
 }
Exemplo n.º 9
0
 public StateSpecifier IgnoreIf(TTriggerType trigger, Func <bool> triggerCondition)
 {
     _specification.AddTriggerStrategy(new IgnoredTriggerStrategy(trigger, triggerCondition));
     return(this);
 }
Exemplo n.º 10
0
 public StateSpecifier PermitReentryIf(TTriggerType trigger, Func <bool> triggerCondition)
 {
     return(InternalPermitIf(trigger, _specification.UnderlyingState, triggerCondition));
 }
Exemplo n.º 11
0
 public StateSpecifier PermitIf(TTriggerType trigger, TStateType destinationState,
                                Func <bool> triggerCondition)
 {
     EnforceNotIdentityTransition(destinationState);
     return(InternalPermitIf(trigger, destinationState, triggerCondition));
 }
Exemplo n.º 12
0
 public bool HasHandlerFor(TTriggerType trigger, out TriggerStrategy handler)
 {
     return(HasLocalHandlerFor(trigger, out handler) ||
            (Superstate != null && Superstate.HasHandlerFor(trigger, out handler)));
 }
Exemplo n.º 13
0
            public bool CanHandle(TTriggerType trigger)
            {
                TriggerStrategy unused;

                return(HasHandlerFor(trigger, out unused));
            }
Exemplo n.º 14
0
 public abstract void OnTrigger(TTriggerType trigger, TTriggerData data, TEntity entity);
Exemplo n.º 15
0
 public override void Trigger(TTriggerType trigger, TTriggerData data)
 {
     Universe.GetEntities <TEntity>().ForAll(entity => OnTrigger(trigger, data, entity));
 }
Exemplo n.º 16
0
 public abstract void OnTrigger(TTriggerType trigger, TTriggerData data, TComponent component);
Exemplo n.º 17
0
 public StateSpecifier Permit(TTriggerType trigger, TStateType destinationState)
 {
     EnforceNotIdentityTransition(destinationState);
     return(InternalPermit(trigger, destinationState));
 }
Exemplo n.º 18
0
 public StateTransitionTriggerStrategy(TTriggerType trigger, TStateType destination,
                                       Func <bool> triggerCondition)
     : base(trigger, triggerCondition)
 {
     _destination = destination;
 }
Exemplo n.º 19
0
 public StateSpecifier PermitReentry(TTriggerType trigger)
 {
     return(InternalPermit(trigger, _specification.UnderlyingState));
 }
Exemplo n.º 20
0
 public IgnoredTriggerStrategy(TTriggerType trigger, Func <bool> triggerCondition)
     : base(trigger, triggerCondition)
 {
 }
Exemplo n.º 21
0
 public StateSpecifier Ignore(TTriggerType trigger)
 {
     return(IgnoreIf(trigger, Promiscuous));
 }
Exemplo n.º 22
0
 public StateSpecifier Permit(TTriggerType trigger, Func <TStateType> destinationStateSelector)
 {
     return(PermitIf(trigger, destinationStateSelector, Promiscuous));
 }
Exemplo n.º 23
0
 public StateSpecifier OnEntryFrom(TTriggerType trigger, Action entryAction)
 {
     return(OnEntryFrom(trigger, t => entryAction()));
 }
Exemplo n.º 24
0
 public StateSpecifier PermitIf(TTriggerType trigger, Func <TStateType> destinationStateSelector,
                                Func <bool> triggerCondition)
 {
     return(PermitIfInternal(trigger, args => destinationStateSelector(), triggerCondition));
 }
Exemplo n.º 25
0
 protected TriggerStrategy(TTriggerType trigger, Func <bool> triggerCondition)
 {
     _trigger          = trigger;
     _triggerCondition = triggerCondition;
 }
Exemplo n.º 26
0
 private StateSpecifier InternalPermit(TTriggerType trigger, TStateType destinationState)
 {
     return(InternalPermitIf(trigger, destinationState, () => true));
 }
 public DestinationFunctionTriggerStrategy(TTriggerType trigger, Func <object[], TStateType> destination,
                                           Func <bool> triggerCondition)
     : base(trigger, triggerCondition)
 {
     _destination = destination;
 }
Exemplo n.º 28
0
 public ParameterizedTrigger(TTriggerType underlyingTrigger, params Type[] argumentTypes)
 {
     _underlyingTrigger = underlyingTrigger;
     _argumentTypes     = argumentTypes;
 }