PauseScreen.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. //-----------------------------------------------------------------------------
  2. // PauseScreen.cs
  3. //
  4. // Microsoft XNA Community Game Platform
  5. // Copyright (C) Microsoft Corporation. All rights reserved.
  6. //-----------------------------------------------------------------------------
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using GameStateManagement;
  12. using Microsoft.Xna.Framework;
  13. namespace CatapultGame
  14. {
  15. class PauseScreen : MenuScreen
  16. {
  17. GameScreen backgroundScreen;
  18. Player human;
  19. Player computer;
  20. bool prevHumanIsActive;
  21. bool prevCompuerIsActive;
  22. public PauseScreen(GameScreen backgroundScreen, Player human, Player computer)
  23. : base(String.Empty)
  24. {
  25. IsPopup = true;
  26. this.backgroundScreen = backgroundScreen;
  27. // Create our menu entries.
  28. MenuEntry startGameMenuEntry = new MenuEntry("Return");
  29. MenuEntry exitMenuEntry = new MenuEntry("Quit Game");
  30. // Hook up menu event handlers.
  31. startGameMenuEntry.Selected += StartGameMenuEntrySelected;
  32. exitMenuEntry.Selected += OnCancel;
  33. // Add entries to the menu.
  34. MenuEntries.Add(startGameMenuEntry);
  35. MenuEntries.Add(exitMenuEntry);
  36. this.human = human;
  37. this.computer = computer;
  38. // Preserve the old state of the game
  39. prevHumanIsActive = this.human.Catapult.IsActive;
  40. prevCompuerIsActive = this.computer.Catapult.IsActive;
  41. // Pause the game logic progress
  42. this.human.Catapult.IsActive = false;
  43. this.computer.Catapult.IsActive = false;
  44. AudioManager.PauseResumeSounds(false);
  45. }
  46. protected override void UpdateMenuEntryLocations()
  47. {
  48. base.UpdateMenuEntryLocations();
  49. foreach (var entry in MenuEntries)
  50. {
  51. Vector2 position = entry.Position;
  52. position.Y += 60;
  53. entry.Position = position;
  54. }
  55. }
  56. /// <summary>
  57. /// Handles "Return" menu item selection
  58. /// </summary>
  59. /// <param name="sender"></param>
  60. /// <param name="e"></param>
  61. void StartGameMenuEntrySelected(object sender, EventArgs e)
  62. {
  63. human.Catapult.IsActive = prevHumanIsActive;
  64. computer.Catapult.IsActive = prevCompuerIsActive;
  65. if (!(human as Human).isDragging)
  66. AudioManager.PauseResumeSounds(true);
  67. else
  68. {
  69. (human as Human).ResetDragState();
  70. AudioManager.StopSounds();
  71. }
  72. backgroundScreen.ExitScreen();
  73. ExitScreen();
  74. }
  75. /// <summary>
  76. /// Handles "Exit" menu item selection
  77. /// </summary>
  78. ///
  79. protected override void OnCancel(PlayerIndex playerIndex)
  80. {
  81. AudioManager.StopSounds();
  82. ScreenManager.AddScreen(new MainMenuScreen(), null);
  83. ExitScreen();
  84. }
  85. }
  86. }