#region File Description
#endregion
#region Using Statements
using
Microsoft.Xna.Framework;
using
GameStateManagementSample;
#endregion
namespace
GameStateManagement
{
/// <summary>
/// The main menu screen is the first thing displayed when the game starts up.
/// </summary>
class
MainMenuScreen : MenuScreen
{
#region Initialization
/// <summary>
/// Constructor fills in the menu contents.
/// </summary>
public
MainMenuScreen()
:
base
(
"Main Menu"
)
{
MenuEntry playGameMenuEntry =
new
MenuEntry(
"Play Game"
);
MenuEntry optionsMenuEntry =
new
MenuEntry(
"Options"
);
MenuEntry exitMenuEntry =
new
MenuEntry(
"Exit"
);
playGameMenuEntry.Selected += PlayGameMenuEntrySelected;
optionsMenuEntry.Selected += OptionsMenuEntrySelected;
exitMenuEntry.Selected += OnCancel;
MenuEntries.Add(playGameMenuEntry);
MenuEntries.Add(optionsMenuEntry);
MenuEntries.Add(exitMenuEntry);
}
#endregion
#region Handle Input
/// <summary>
/// Event handler for when the Play Game menu entry is selected.
/// </summary>
void
PlayGameMenuEntrySelected(
object
sender, PlayerIndexEventArgs e)
{
LoadingScreen.Load(ScreenManager,
true
, e.PlayerIndex,
new
GameplayScreen());
}
/// <summary>
/// Event handler for when the Options menu entry is selected.
/// </summary>
void
OptionsMenuEntrySelected(
object
sender, PlayerIndexEventArgs e)
{
ScreenManager.AddScreen(
new
OptionsMenuScreen(), e.PlayerIndex);
}
/// <summary>
/// When the user cancels the main menu, ask if they want to exit the sample.
/// </summary>
protected
override
void
OnCancel(PlayerIndex playerIndex)
{
const
string
message =
"Are you sure you want to exit this sample?"
;
MessageBoxScreen confirmExitMessageBox =
new
MessageBoxScreen(message);
confirmExitMessageBox.Accepted += ConfirmExitMessageBoxAccepted;
ScreenManager.AddScreen(confirmExitMessageBox, playerIndex);
}
/// <summary>
/// Event handler for when the user selects ok on the "are you sure
/// you want to exit" message box.
/// </summary>
void
ConfirmExitMessageBoxAccepted(
object
sender, PlayerIndexEventArgs e)
{
ScreenManager.Game.Exit();
}
#endregion
}
}