OptionsMenuScreen.cs 4.3 KB

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