150 lines
4.3 KiB
C#
150 lines
4.3 KiB
C#
|
#region File Description
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// OptionsMenuScreen.cs
|
||
|
//
|
||
|
// Microsoft XNA Community Game Platform
|
||
|
// Copyright (C) Microsoft Corporation. All rights reserved.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
#endregion
|
||
|
|
||
|
#region Using Statements
|
||
|
using Microsoft.Xna.Framework;
|
||
|
#endregion
|
||
|
|
||
|
namespace GameStateManagement
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// The options screen is brought up over the top of the main menu
|
||
|
/// screen, and gives the user a chance to configure the game
|
||
|
/// in various hopefully useful ways.
|
||
|
/// </summary>
|
||
|
class OptionsMenuScreen : MenuScreen
|
||
|
{
|
||
|
#region Fields
|
||
|
|
||
|
MenuEntry ungulateMenuEntry;
|
||
|
MenuEntry languageMenuEntry;
|
||
|
MenuEntry frobnicateMenuEntry;
|
||
|
MenuEntry elfMenuEntry;
|
||
|
|
||
|
enum Ungulate
|
||
|
{
|
||
|
BactrianCamel,
|
||
|
Dromedary,
|
||
|
Llama,
|
||
|
}
|
||
|
|
||
|
static Ungulate currentUngulate = Ungulate.Dromedary;
|
||
|
|
||
|
static string[] languages = { "C#", "French", "Deoxyribonucleic acid" };
|
||
|
static int currentLanguage = 0;
|
||
|
|
||
|
static bool frobnicate = true;
|
||
|
|
||
|
static int elf = 23;
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region Initialization
|
||
|
|
||
|
|
||
|
/// <summary>
|
||
|
/// Constructor.
|
||
|
/// </summary>
|
||
|
public OptionsMenuScreen()
|
||
|
: base("Options")
|
||
|
{
|
||
|
// Create our menu entries.
|
||
|
ungulateMenuEntry = new MenuEntry(string.Empty);
|
||
|
languageMenuEntry = new MenuEntry(string.Empty);
|
||
|
frobnicateMenuEntry = new MenuEntry(string.Empty);
|
||
|
elfMenuEntry = new MenuEntry(string.Empty);
|
||
|
|
||
|
SetMenuEntryText();
|
||
|
|
||
|
MenuEntry back = new MenuEntry("Back");
|
||
|
|
||
|
// Hook up menu event handlers.
|
||
|
ungulateMenuEntry.Selected += UngulateMenuEntrySelected;
|
||
|
languageMenuEntry.Selected += LanguageMenuEntrySelected;
|
||
|
frobnicateMenuEntry.Selected += FrobnicateMenuEntrySelected;
|
||
|
elfMenuEntry.Selected += ElfMenuEntrySelected;
|
||
|
back.Selected += OnCancel;
|
||
|
|
||
|
// Add entries to the menu.
|
||
|
MenuEntries.Add(ungulateMenuEntry);
|
||
|
MenuEntries.Add(languageMenuEntry);
|
||
|
MenuEntries.Add(frobnicateMenuEntry);
|
||
|
MenuEntries.Add(elfMenuEntry);
|
||
|
MenuEntries.Add(back);
|
||
|
}
|
||
|
|
||
|
|
||
|
/// <summary>
|
||
|
/// Fills in the latest values for the options screen menu text.
|
||
|
/// </summary>
|
||
|
void SetMenuEntryText()
|
||
|
{
|
||
|
ungulateMenuEntry.Text = "Preferred ungulate: " + currentUngulate;
|
||
|
languageMenuEntry.Text = "Language: " + languages[currentLanguage];
|
||
|
frobnicateMenuEntry.Text = "Frobnicate: " + (frobnicate ? "on" : "off");
|
||
|
elfMenuEntry.Text = "elf: " + elf;
|
||
|
}
|
||
|
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region Handle Input
|
||
|
|
||
|
|
||
|
/// <summary>
|
||
|
/// Event handler for when the Ungulate menu entry is selected.
|
||
|
/// </summary>
|
||
|
void UngulateMenuEntrySelected(object sender, PlayerIndexEventArgs e)
|
||
|
{
|
||
|
currentUngulate++;
|
||
|
|
||
|
if (currentUngulate > Ungulate.Llama)
|
||
|
currentUngulate = 0;
|
||
|
|
||
|
SetMenuEntryText();
|
||
|
}
|
||
|
|
||
|
|
||
|
/// <summary>
|
||
|
/// Event handler for when the Language menu entry is selected.
|
||
|
/// </summary>
|
||
|
void LanguageMenuEntrySelected(object sender, PlayerIndexEventArgs e)
|
||
|
{
|
||
|
currentLanguage = (currentLanguage + 1) % languages.Length;
|
||
|
|
||
|
SetMenuEntryText();
|
||
|
}
|
||
|
|
||
|
|
||
|
/// <summary>
|
||
|
/// Event handler for when the Frobnicate menu entry is selected.
|
||
|
/// </summary>
|
||
|
void FrobnicateMenuEntrySelected(object sender, PlayerIndexEventArgs e)
|
||
|
{
|
||
|
frobnicate = !frobnicate;
|
||
|
|
||
|
SetMenuEntryText();
|
||
|
}
|
||
|
|
||
|
|
||
|
/// <summary>
|
||
|
/// Event handler for when the Elf menu entry is selected.
|
||
|
/// </summary>
|
||
|
void ElfMenuEntrySelected(object sender, PlayerIndexEventArgs e)
|
||
|
{
|
||
|
elf++;
|
||
|
|
||
|
SetMenuEntryText();
|
||
|
}
|
||
|
|
||
|
|
||
|
#endregion
|
||
|
}
|
||
|
}
|