PauseMenuScreen.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. //-----------------------------------------------------------------------------
  2. // PauseMenuScreen.cs
  3. //
  4. // Microsoft XNA Community Game Platform
  5. // Copyright (C) Microsoft Corporation. All rights reserved.
  6. //-----------------------------------------------------------------------------
  7. using System;
  8. using Microsoft.Xna.Framework;
  9. using Microsoft.Xna.Framework.Media;
  10. namespace AlienGameSample
  11. {
  12. /// <summary>
  13. /// Primarily for controlling what song is playing.
  14. /// </summary>
  15. class PauseMenuScreen : MenuScreen
  16. {
  17. MenuEntry songMenuEntry;
  18. MenuEntry playMenuEntry;
  19. static int selectedSongIndex;
  20. static int playingSongIndex = -1;
  21. /// <summary>
  22. /// Constructor.
  23. /// </summary>
  24. public PauseMenuScreen()
  25. : base("Pause")
  26. {
  27. IsPopup = true;
  28. MenuEntry resumeGameMenuEntry = new MenuEntry("RESUME");
  29. MenuEntry quitGameMenuEntry = new MenuEntry("QUIT");
  30. resumeGameMenuEntry.Selected += OnCancel;
  31. quitGameMenuEntry.Selected += QuitGameMenuEntrySelected;
  32. // Create our menu entries.
  33. songMenuEntry = new MenuEntry("SONG:");
  34. playMenuEntry = new MenuEntry("PLAY");
  35. MenuEntry backMenuEntry = new MenuEntry("BACK");
  36. // Hook up menu event handlers.
  37. songMenuEntry.Selected += SongMenuEntrySelected;
  38. playMenuEntry.Selected += PlayMenuEntrySelected;
  39. backMenuEntry.Selected += OnCancel;
  40. // Add entries to the menu.
  41. MenuEntries.Add(resumeGameMenuEntry);
  42. MenuEntries.Add(songMenuEntry);
  43. MenuEntries.Add(playMenuEntry);
  44. MenuEntries.Add(quitGameMenuEntry);
  45. if (playingSongIndex != -1)
  46. {
  47. selectedSongIndex = playingSongIndex;
  48. }
  49. TransitionOnTime = TimeSpan.FromSeconds(0.5);
  50. TransitionOffTime = TimeSpan.FromSeconds(0.5);
  51. }
  52. public override void LoadContent()
  53. {
  54. // Set the initial menu content (requires ScreenManager to have been set).
  55. UpdateMenuText();
  56. base.LoadContent();
  57. }
  58. private void UpdateMenuText()
  59. {
  60. /*if (ScreenManager.MediaLibrary != null && ScreenManager.MediaLibrary.Songs.Count > 0)
  61. {
  62. songMenuEntry.Text = "SONG: " + ScreenManager.MediaLibrary.Songs[selectedSongIndex] + (ScreenManager.MediaLibrary.Songs[selectedSongIndex].IsProtected ? " (DRM)" : "");
  63. if (MediaPlayer.State == MediaState.Playing)
  64. playMenuEntry.Text = "STOP";
  65. else
  66. {
  67. if (ScreenManager.MediaLibrary.Songs[selectedSongIndex].IsProtected == true)
  68. {
  69. playMenuEntry.Text = "-";
  70. }
  71. else
  72. {
  73. playMenuEntry.Text = "PLAY";
  74. }
  75. }
  76. }
  77. else
  78. {*/
  79. songMenuEntry.Text = "(NO SONGS)";
  80. playMenuEntry.Text = "-";
  81. //}
  82. }
  83. void AdvanceSong()
  84. {
  85. /*if (ScreenManager.MediaLibrary == null || ScreenManager.MediaLibrary.Songs.Count == 0)
  86. return;
  87. selectedSongIndex = (selectedSongIndex + 1) % ScreenManager.MediaLibrary.Songs.Count;
  88. UpdateMenuText();*/
  89. }
  90. /// <summary>
  91. /// Event handler for when the Language menu entry is selected.
  92. /// </summary>
  93. void SongMenuEntrySelected(object sender, EventArgs e)
  94. {
  95. AdvanceSong();
  96. }
  97. void PlayMenuEntrySelected(object sender, EventArgs e)
  98. {
  99. /*if (ScreenManager.MediaLibrary == null || ScreenManager.MediaLibrary.Songs.Count == 0)
  100. return;
  101. if (MediaPlayer.State == MediaState.Playing)
  102. {
  103. MediaPlayer.Stop();
  104. playingSongIndex = -1;
  105. }
  106. else
  107. {
  108. if (ScreenManager.MediaLibrary.Songs[selectedSongIndex].IsProtected == false)
  109. {
  110. MediaPlayer.Play(ScreenManager.MediaLibrary.Songs[selectedSongIndex]);
  111. playingSongIndex = selectedSongIndex;
  112. }
  113. }
  114. UpdateMenuText();*/
  115. }
  116. /// <summary>
  117. /// Event handler for when the Quit Game menu entry is selected.
  118. /// </summary>
  119. void QuitGameMenuEntrySelected(object sender, EventArgs e)
  120. {
  121. foreach (GameScreen screen in ScreenManager.GetScreens())
  122. screen.ExitScreen();
  123. ScreenManager.AddScreen(new BackgroundScreen());
  124. ScreenManager.AddScreen(new MainMenuScreen());
  125. }
  126. /// <summary>
  127. /// Draws the pause menu screen. This darkens down the gameplay screen
  128. /// that is underneath us, and then chains to the base MenuScreen.Draw.
  129. /// </summary>
  130. public override void Draw(GameTime gameTime)
  131. {
  132. ScreenManager.FadeBackBufferToBlack(TransitionAlpha * 2 / 3);
  133. base.Draw(gameTime);
  134. }
  135. }
  136. }