#region File Description
//-----------------------------------------------------------------------------
// PauseScreen.cs
//
// Microsoft XNA Community Game Platform
// Copyright (C) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
#endregion
#region Using Statements
using System;
using System.Collections.Generic;
using System.Text;
using GameStateManagement;
using Microsoft.Xna.Framework;
#endregion
namespace Blackjack
{
class PauseScreen : MenuScreen
{
#region Initializations
///
/// Initializes a new instance of the screen.
///
public PauseScreen()
: base("")
{
}
#endregion
public override void LoadContent()
{
// Create our menu entries.
MenuEntry returnGameMenuEntry = new MenuEntry("Back");
MenuEntry exitMenuEntry = new MenuEntry("Quit");
// Hook up menu event handlers.
returnGameMenuEntry.Selected += ReturnGameMenuEntrySelected;
exitMenuEntry.Selected += OnCancel;
// Add entries to the menu.
MenuEntries.Add(returnGameMenuEntry);
MenuEntries.Add(exitMenuEntry);
base.LoadContent();
}
#region Update
///
/// Respond to "Return" Item Selection
///
///
///
void ReturnGameMenuEntrySelected(object sender, EventArgs e)
{
GameScreen[] screens = ScreenManager.GetScreens();
GameplayScreen gameplayScreen = null;
List res = new List();
for (int screenIndex = 0; screenIndex < screens.Length; screenIndex++)
{
if (screens[screenIndex] is GameplayScreen)
{
gameplayScreen = (GameplayScreen)screens[screenIndex];
}
else
{
res.Add(screens[screenIndex]);
}
}
foreach (GameScreen screen in res)
screen.ExitScreen();
gameplayScreen.ReturnFromPause();
}
///
/// Respond to "Quit Game" Item Selection
///
///
protected override void OnCancel(PlayerIndex playerIndex)
{
for (int componentIndex = 0; componentIndex < ScreenManager.Game.Components.Count; componentIndex++)
{
if (!(ScreenManager.Game.Components[componentIndex] is ScreenManager))
{
if (ScreenManager.Game.Components[componentIndex] is DrawableGameComponent)
{
(ScreenManager.Game.Components[componentIndex] as IDisposable).Dispose();
componentIndex--;
}
else
{
ScreenManager.Game.Components.RemoveAt(componentIndex);
componentIndex--;
}
}
}
foreach (GameScreen screen in ScreenManager.GetScreens())
screen.ExitScreen();
ScreenManager.AddScreen(new BackgroundScreen(), null);
ScreenManager.AddScreen(new MainMenuScreen(), null);
}
#endregion
}
}