MainMenuScreen.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. //-----------------------------------------------------------------------------
  2. // MainMenuScreen.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. //using Microsoft.Xna.Framework.Net; // Not available in MonoGame 3.8
  14. namespace CatapultGame
  15. {
  16. class MainMenuScreen : MenuScreen
  17. {
  18. public MainMenuScreen()
  19. : base(String.Empty)
  20. {
  21. IsPopup = true;
  22. // Create our menu entries.
  23. MenuEntry startGameMenuEntry = new MenuEntry("Play");
  24. MenuEntry startMultiPlayerGameMenuEntry = new MenuEntry("Multi-Player");
  25. MenuEntry exitMenuEntry = new MenuEntry("Exit");
  26. // Hook up menu event handlers.
  27. startGameMenuEntry.Selected += StartGameMenuEntrySelected;
  28. startMultiPlayerGameMenuEntry.Selected += StartMultiPlayerGameMenuEntrySelected;
  29. exitMenuEntry.Selected += OnCancel;
  30. // Add entries to the menu.
  31. MenuEntries.Add(startGameMenuEntry);
  32. MenuEntries.Add(startMultiPlayerGameMenuEntry);
  33. MenuEntries.Add(exitMenuEntry);
  34. }
  35. protected override void UpdateMenuEntryLocations()
  36. {
  37. base.UpdateMenuEntryLocations();
  38. foreach (var entry in MenuEntries)
  39. {
  40. Vector2 position = entry.Position;
  41. position.Y += 60;
  42. entry.Position = position;
  43. }
  44. }
  45. /// <summary>
  46. /// Handles "Play" menu item selection
  47. /// </summary>
  48. /// <param name="sender"></param>
  49. /// <param name="e"></param>
  50. void StartGameMenuEntrySelected(object sender, EventArgs e)
  51. {
  52. // Lets make sure we get rid of our network session
  53. // so we can start up clean
  54. // ScreenManager.Game.Services.RemoveService(typeof(NetworkSession)); // Not available in MonoGame 3.8
  55. ScreenManager.AddScreen(new InstructionsScreen(), null);
  56. }
  57. /// <summary>
  58. /// Handles "Exit" menu item selection
  59. /// </summary>
  60. ///
  61. protected override void OnCancel(PlayerIndex playerIndex)
  62. {
  63. ScreenManager.Game.Exit();
  64. }
  65. void StartMultiPlayerGameMenuEntrySelected (object sender, PlayerIndexEventArgs e)
  66. {
  67. // Networking disabled in MonoGame 3.8 - start single player game instead
  68. LoadingScreen.Load (ScreenManager, true, e.PlayerIndex, new GameplayScreen ());
  69. }
  70. /// <summary>
  71. /// Helper method shared by the Live and System Link menu event handlers.
  72. /// </summary>
  73. /*
  74. // Networking methods disabled in MonoGame 3.8
  75. void CreateOrFindSession (NetworkSessionType sessionType,
  76. PlayerIndex playerIndex)
  77. {
  78. // First, we need to make sure a suitable gamer profile is signed in.
  79. ProfileSignInScreen profileSignIn = new ProfileSignInScreen (sessionType);
  80. // Hook up an event so once the ProfileSignInScreen is happy,
  81. // it will activate the CreateOrFindSessionScreen.
  82. profileSignIn.ProfileSignedIn += delegate
  83. {
  84. GameScreen createOrFind = new CreateOrFindSessionScreen (sessionType);
  85. ScreenManager.AddScreen (createOrFind, playerIndex);
  86. };
  87. // Activate the ProfileSignInScreen.
  88. ScreenManager.AddScreen (profileSignIn, playerIndex);
  89. }
  90. */
  91. }
  92. }