/// <summary>
        /// Initialize the main menu screen by creating all the screens
        /// </summary>
        /// <param name="screenResolution"></param>
        /// <param name="screenResolutionChanged"></param>
        /// <param name="showSplash"></param>
        /// <param name="game"></param>
        private void Initialize(Vector2 screenResolution, bool screenResolutionChanged, bool showSplash, Game1 game)
        {
            mGameModeSelectScreen = new GameModeSelectScreen(screenResolution);
            mLoadSelectScreen     = new LoadSelectScreen(screenResolution);
            mAchievementsScreen   = new AchievementsScreen(screenResolution);

            mOptionsScreen        = new OptionsScreen(screenResolution, screenResolutionChanged, game, ref mDirector);
            mMenuBackgroundScreen = new MenuBackgroundScreen(screenResolution);
            mSplashScreen         = new SplashScreen(screenResolution);
            mMainMenuScreen       = new MainMenuScreen(screenResolution, showSplash);
        }
Beispiel #2
0
        /// <summary>
        /// Automates the process of removing and adding new screens
        /// that are part of the PauseMenu to the stack screen manager.
        /// </summary>
        /// <param name="targetEScreen"></param>
        /// <param name="originScreen"></param>
        /// <param name="targetScreen"></param>
        /// <param name="gameTime">Used for animations</param>
        private void SwitchScreen(EScreen targetEScreen,
                                  ITransitionableMenu originScreen,
                                  ITransitionableMenu targetScreen,
                                  GameTime gameTime)
        {
            switch (mTransitionState)
            {
            case 0:
                // start the necessary transitions
                originScreen.TransitionTo(mScreenState, targetEScreen, gameTime);
                mTransitionState = 1;
                break;

            case 1:
                // Wait for the origin screen to finish transitioning out
                if (!originScreen.TransitionRunning)
                {
                    // once it is done transitioning out, remove it and add the target screen
                    mScreenManager.RemoveScreen();
                    mScreenManager.AddScreen(targetScreen);
                    // then start transitioning the target screen
                    targetScreen.TransitionTo(mScreenState, targetEScreen, gameTime);
                    mTransitionState = 2;
                }

                break;

            case 2:
                // now wait for the target screen to finish transitioning in
                if (!targetScreen.TransitionRunning)
                {
                    // once it is done transitioning in, change the states of everyone to reflect the new state
                    mScreenState     = targetEScreen;
                    sPressed         = "None";
                    mTransitionState = 0;
                }

                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }