/// <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)); } } } } }
/// <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); }