2
0

OptionsMenuScreen.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. #region File Description
  2. //-----------------------------------------------------------------------------
  3. // OptionsMenuScreen.cs
  4. //
  5. // Microsoft XNA Community Game Platform
  6. // Copyright (C) Microsoft Corporation. All rights reserved.
  7. //-----------------------------------------------------------------------------
  8. #endregion
  9. #region Using Statements
  10. #if IPHONE
  11. using Microsoft.Xna.Framework;
  12. #else
  13. using Microsoft.Xna.Framework;
  14. #endif
  15. #endregion
  16. namespace Microsoft.Xna.Samples.GameStateManagement
  17. {
  18. /// <summary>
  19. /// The options screen is brought up over the top of the main menu
  20. /// screen, and gives the user a chance to configure the game
  21. /// in various hopefully useful ways.
  22. /// </summary>
  23. class OptionsMenuScreen : MenuScreen
  24. {
  25. #region Fields
  26. MenuEntry ungulateMenuEntry;
  27. MenuEntry languageMenuEntry;
  28. MenuEntry frobnicateMenuEntry;
  29. MenuEntry elfMenuEntry;
  30. enum Ungulate
  31. {
  32. BactrianCamel,
  33. Dromedary,
  34. Llama,
  35. }
  36. static Ungulate currentUngulate = Ungulate.Dromedary;
  37. static string[] languages = { "C#", "French", "Deoxyribonucleic acid" };
  38. static int currentLanguage = 0;
  39. static bool frobnicate = true;
  40. static int elf = 23;
  41. #endregion
  42. #region Initialization
  43. /// <summary>
  44. /// Constructor.
  45. /// </summary>
  46. public OptionsMenuScreen()
  47. : base("Options")
  48. {
  49. // Create our menu entries.
  50. ungulateMenuEntry = new MenuEntry(string.Empty);
  51. languageMenuEntry = new MenuEntry(string.Empty);
  52. frobnicateMenuEntry = new MenuEntry(string.Empty);
  53. elfMenuEntry = new MenuEntry(string.Empty);
  54. SetMenuEntryText();
  55. MenuEntry backMenuEntry = new MenuEntry("Back");
  56. // Hook up menu event handlers.
  57. ungulateMenuEntry.Selected += UngulateMenuEntrySelected;
  58. languageMenuEntry.Selected += LanguageMenuEntrySelected;
  59. frobnicateMenuEntry.Selected += FrobnicateMenuEntrySelected;
  60. elfMenuEntry.Selected += ElfMenuEntrySelected;
  61. backMenuEntry.Selected += OnCancel;
  62. // Add entries to the menu.
  63. MenuEntries.Add(ungulateMenuEntry);
  64. MenuEntries.Add(languageMenuEntry);
  65. MenuEntries.Add(frobnicateMenuEntry);
  66. MenuEntries.Add(elfMenuEntry);
  67. MenuEntries.Add(backMenuEntry);
  68. }
  69. /// <summary>
  70. /// Fills in the latest values for the options screen menu text.
  71. /// </summary>
  72. void SetMenuEntryText()
  73. {
  74. ungulateMenuEntry.Text = "Preferred ungulate: " + currentUngulate;
  75. languageMenuEntry.Text = "Language: " + languages[currentLanguage];
  76. frobnicateMenuEntry.Text = "Frobnicate: " + (frobnicate ? "on" : "off");
  77. elfMenuEntry.Text = "elf: " + elf;
  78. }
  79. #endregion
  80. #region Handle Input
  81. /// <summary>
  82. /// Event handler for when the Ungulate menu entry is selected.
  83. /// </summary>
  84. void UngulateMenuEntrySelected(object sender, PlayerIndexEventArgs e)
  85. {
  86. currentUngulate++;
  87. if (currentUngulate > Ungulate.Llama)
  88. currentUngulate = 0;
  89. SetMenuEntryText();
  90. }
  91. /// <summary>
  92. /// Event handler for when the Language menu entry is selected.
  93. /// </summary>
  94. void LanguageMenuEntrySelected(object sender, PlayerIndexEventArgs e)
  95. {
  96. currentLanguage = (currentLanguage + 1) % languages.Length;
  97. SetMenuEntryText();
  98. }
  99. /// <summary>
  100. /// Event handler for when the Frobnicate menu entry is selected.
  101. /// </summary>
  102. void FrobnicateMenuEntrySelected(object sender, PlayerIndexEventArgs e)
  103. {
  104. frobnicate = !frobnicate;
  105. SetMenuEntryText();
  106. }
  107. /// <summary>
  108. /// Event handler for when the Elf menu entry is selected.
  109. /// </summary>
  110. void ElfMenuEntrySelected(object sender, PlayerIndexEventArgs e)
  111. {
  112. elf++;
  113. SetMenuEntryText();
  114. }
  115. #endregion
  116. }
  117. }