OptionsMenuScreen.cs 3.9 KB

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