예제 #1
0
        /// <summary>
        /// Päivittää tämän hetkistä siirtymää ja aktiivista ikkunaa.
        /// </summary>
        public void Update(GameTime gameTime)
        {
            if (Enabled)
            {
                Current.Update(gameTime);
                if (currentPlayer != null)
                {
                    // Viimeinen steppi siirtymässä, jos ollaan
                    // toistettu koko siirtymä, asettaa sen nulliksi.
                    if (!currentPlayer.IsFinished)
                    {
                        currentPlayer.Update(gameTime);
                    }
                    else
                    {
                        currentPlayer = null;

                        if (OnChanged != null)
                        {
                            OnChanged(next, new ContainerEvetArgs(Current));
                        }
                    }
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Vaihtaa ikkunan ja aloittaa siirtymän piirtämisen.
        /// Hoitaa siirtymän toiston aikana ikkunoiden välisen focuksen vaihdon.
        /// Voidaan vaihtaa ikkuna myös ilman siirtymä efektiä.
        /// </summary>
        /// <param name="container">Container joka halutaan vaihtaa aktiiviseksi.</param>
        /// <param name="transitionPlayer">Toistaja joka toistaa siirtymä efektit.</param>
        /// <returns>Palauttaa truen jos ikkuna löytyi ja se vaihdetaan. Falsen jos ikkunaa ei löytynyt.</returns>
        public bool ChangeContainer(T container, TransitionPlayer transitionPlayer = null)
        {
            bool results = false;

            // Jos container ei kuulu tähän manageriin, palauttaa falsen suoraan.
            if (GetContainer(c => c == container) != null && currentPlayer == null)
            {
                next          = container;
                currentPlayer = transitionPlayer;

                if (OnChange != null)
                {
                    OnChange(next, new ContainerEvetArgs(Current));
                }

                // Jossei playeriä syötetty, vaihdetaan ikkuna suoriltaan.
                if (currentPlayer == null)
                {
                    DisableCurrent();
                    Current = container;

                    EnableCurrent();
                    next = null;
                }
                else
                {
                    Current.Defocus();
                    Current.Enabled = false;

                    // Hookataan eventit joilla hallitaan ikkunoiden focusta siirtymä efektien välillä.
                    transitionPlayer.OnInTransitionFinished  += new TransitionEventHandler(transitionPlayer_OnInTransitionFinished);
                    transitionPlayer.OnOutTransitionFinished += new TransitionEventHandler(transitionPlayer_OnOutTransitionFinished);
                    currentPlayer.Start();
                }

                results = true;
            }

            return(results);
        }