예제 #1
0
        /// <summary>
        /// Ruft die Update ()-Methode des aktuellen Screens auf.
        /// </summary>
        protected override void Update(GameTime time)
        {
            if (Screens == null)
            {
                InitializeScreens();
            }

            try {
                updateResolution();
                // falls der Screen gewechselt werden soll...
                IScreen current = Screens.Peek();
                IScreen next    = current.NextScreen;
                if (current != next && !(current is ErrorScreen))
                {
                    if (ScreenTransitionEffect != null && !SkipNextScreenEffect)
                    {
                        next.PostProcessingEffect = ScreenTransitionEffect(current, next);
                    }
                    SkipNextScreenEffect = false;
                    current.BeforeExit(next, time);
                    current.NextScreen = current;
                    next.NextScreen    = next;
                    if (next.ClearScreenHistory)
                    {
                        Screens.Clear();
                    }
                    Screens.Push(next);
                    next.Entered(current, time);
                }

                // Rufe Update () auf dem aktuellen Screen auf
                Screens.Peek().Update(time);

                // base method
                base.Update(time);
            } catch (Exception ex) {
                if (ErrorScreenEnabled)
                {
                    // Error Screen
                    ShowError(ex);
                }
                else
                {
                    throw;
                }
            }
        }