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