예제 #1
0
 /// <summary>
 /// Toistaa tämän hetkistä transitionia. Vaihtaa transitionin jos
 /// tämän hetkinen on toistettu loppuun.
 /// </summary>
 public void Update(GameTime gameTime)
 {
     if (isStarted)
     {
         if (currentTransition.IsFinished)
         {
             ChangeTransition();
         }
         else
         {
             currentTransition.Update(gameTime);
         }
     }
 }
예제 #2
0
        public override void Update(GameTime gameTime)
        {
            if (Out != null)
            {
                if (Out.IsFinished != _oldState && OnHalf != null)
                {
                    OnHalf();
                }
                _oldState = Out.IsFinished;
            }

            if (InitialState != null && Out != null && !Out.IsFinished)
            {
                Out.Update(gameTime, OutSpeed);
            }
            else if (TargetState != null && In != null && !In.IsFinished)
            {
                In.Update(gameTime, InSpeed);
            }
            else
            {
                _engine.SwitchState(TargetState);
            }
        }
예제 #3
0
        public virtual void Update(GameTime time)
        {
            // jos nykyisellä ruudulla on lopetus siirtymä
            if (leaveTransition != null)
            {
                if (!leaveTransition.IsStarted)
                {
                    leaveTransition.Start();
                }
                leaveTransition.Update(time);
                // jos siirtymä on valmis niin vaihdetaan ruutu seuraavaan
                // ja aletaan suorittamaan aloitus siirtymää
                if (leaveTransition.IsFinished)
                {
                    leaveTransition = null;
                    // jos on viiminen ruutu, niin nextiä ei sillon ole
                    if (next != null)
                    {
                        if (next.IsPopUp)
                        {
                            current.State = ScreenState.Background;
                        }
                        else
                        {
                            current.State = ScreenState.Hidden; // ei ole enää näkyvissä
                        }
                        // vaihdetaan ruutujen paikat
                        T prev = current;
                        current = next;
                        // tyhjennetään nykyisen ruudun viite
                        next          = default(T);
                        current.State = ScreenState.TransitionOn; // ollaan häivyttämässä kuvaa sisään
                        if (prev.IsPopUp)
                        {
                            enterTransition = new EmptyTransition();
                        }
                        else
                        {
                            enterTransition = current.EnterTransition;
                        }

                        if (enterTransition == null)
                        {
                            enterTransition = new EmptyTransition();
                        }
                        enterTransition.Init(current, prev);
                    }
                }
            }
            for (int i = states.Count - 1; i >= 0; i--)
            {
                T state = states[i];
                state.Update(time);
            }
            if (enterTransition != null)
            {
                if (!enterTransition.IsStarted)
                {
                    enterTransition.Start();
                }
                enterTransition.Update(time);
                if (enterTransition.IsFinished)
                {
                    enterTransition  = null;
                    current.State    = ScreenState.Active; // nyt ollaan näkyvissä
                    current.HasFocus = true;


                    for (int i = states.Count - 1; i >= 0; i--)
                    {
                        T state = states[i];
                        if (state.IsExiting)
                        {
                            Remove(state);
                        }
                    }
                }
            }
        }