Ejemplo n.º 1
0
        public void MenuOptions_Transitioned(object sender, EventArgs e)
        {
            CurrentOptions.Children.Clear();

            for (Int32 i = NextOptions.Children.Count - 1; i >= 0; i--)
            {
                TextBlock textBlock = NextOptions.Children[i] as TextBlock;

                textBlock.MouseEnter          += Option_MouseEnter;
                textBlock.MouseLeftButtonDown += Option_MouseLeftButtonDown;

                NextOptions.Children.Remove(textBlock);
                CurrentOptions.Children.Insert(0, textBlock);
            }

            CurrentTitle.Text = NextTitle.Text;
            TitleText         = CurrentTitle.Text;

            DoubleAnimation set = new DoubleAnimation(0.8, new Duration(TimeSpan.FromSeconds(0.0)));

            CurrentOptions.BeginAnimation(TextBlock.OpacityProperty, set);

            TextBlock option = Mouse.DirectlyOver as TextBlock;

            if (option != null && CurrentOptions.Children.Contains(option))
            {
                Option_MouseEnter(option, null);
            }

            Transitioned?.Invoke(this, new EventArgs());
        }
Ejemplo n.º 2
0
Archivo: FsmES.cs Proyecto: 0xCM/arrows
 void OnTransition(S s0, S s1)
 {
     Transitioned?.Invoke(s0, s1);
     OnExit(s0);
     OnEntry(s1);
     TransitionCount++;
 }
Ejemplo n.º 3
0
        private void InternalFire(TTrigger trigger, params object[] args)
        {
            TriggerWithParameters configuration;

            if (_triggerConfiguration.TryGetValue(trigger, out configuration))
            {
                configuration.ValidateParameters(args);
            }

            var source = State;
            var representativeState = GetRepresentation(source);

            TriggerBehaviour triggerBehaviour;

            if (!representativeState.TryFindHandler(trigger, out triggerBehaviour))
            {
                _unhandledTriggerAction(representativeState.UnderlyingState, trigger);
                return;
            }

            TState destination;

            if (triggerBehaviour.ResultsInTransitionFrom(source, args, out destination))
            {
                var transition = new Transition(source, destination, trigger);

                representativeState.Exit(transition);

                State = transition.Destination;
                var newRepresentation = GetRepresentation(transition.Destination);
                Transitioned?.Invoke(transition);

                newRepresentation.Enter(transition, args);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Transitions from the <see cref="CanvasMenu"/> to <paramref name="to"/>, records history.
        /// </summary>
        /// <param name="to"></param>
        public void TransitionTo(CanvasMenu to)
        {
            to.RegisterHistoryChange(this);
            to.Open();
            Close();

            Transitioned?.Invoke(this, to);
        }
Ejemplo n.º 5
0
    public void TransitionWorlds()
    {
        InMirrorWorld = !InMirrorWorld;

        if (InMirrorWorld)
        {
            fakeWorldAudio.Play();
        }
        else
        {
            fakeWorldAudio.Stop();
        }

        Transitioned?.Invoke(InMirrorWorld);
        GetComponentInChildren <FullScreenEffect>().enabled = InMirrorWorld;
        StartCoroutine(TransitioningSequence());
    }
Ejemplo n.º 6
0
        public void Transition(string token)
        {
            // First check that we have that token defined
            if (!Tokens.Contains(token))
            {
                throw new ArgumentOutOfRangeException(nameof(token), token, "Given token is not defined.");
            }

            // And that we have a transition for this token
            if (!Transitions.Any(t => t.Token == token && t.From == CurrentState))
            {
                throw new ArgumentOutOfRangeException(nameof(token), token, $"No transition exists for {CurrentState} + {token}.");
            }

            // Get list of possible transitions...
            var possible = Transitions.Where(t => t.From == CurrentState && t.Token == token).ToList();

            // Check validity of transition
            do
            {
                var transition = possible.MinBy(t =>
                {
                    if (t.TransitionMode != Mode.Pop)
                    {
                        return(0);
                    }
                    var distanceTo = Stack.IndexOf((T)t.To);
                    return(distanceTo == -1 ? int.MaxValue : distanceTo);
                });
                switch (transition.TransitionMode)
                {
                case Mode.Pop:
                    var pop = Stack.IndexOf((T)transition.To);
                    if (pop == -1)
                    {
                        possible.Remove(transition);
                        continue;
                    }
                    for (var i = 0; i < pop; i++)
                    {
                        Stack.RemoveAt(0);
                    }
                    break;

                case Mode.Push:
                    transition = Transitions.First(t => t.Token == token && t.From == CurrentState);
                    Stack.Insert(0, (T)transition.To);
                    break;

                case Mode.PushPop:
                    transition = Transitions.First(t => t.Token == token && t.From == CurrentState);
                    if (Stack.Count > 0)
                    {
                        Stack.RemoveAt(0);
                    }
                    Stack.Insert(0, (T)transition.To);
                    break;
                }

                CurrentState?.Enter();
                Transitioned?.Invoke(transition);
                return;
            } while (Transitions.Count > 0);
        }