1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 |
#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 AIDemos
{
/// <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>
public 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 backMenuEntry = new MenuEntry("Back");
// Hook up menu event handlers.
ungulateMenuEntry.Selected += UngulateMenuEntrySelected;
languageMenuEntry.Selected += LanguageMenuEntrySelected;
frobnicateMenuEntry.Selected += FrobnicateMenuEntrySelected;
elfMenuEntry.Selected += ElfMenuEntrySelected;
backMenuEntry.Selected += OnCancel;
// Add entries to the menu.
MenuEntries.Add(ungulateMenuEntry);
MenuEntries.Add(languageMenuEntry);
MenuEntries.Add(frobnicateMenuEntry);
MenuEntries.Add(elfMenuEntry);
MenuEntries.Add(backMenuEntry);
}
/// <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
}
} |