MessageBoxScreen.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //-----------------------------------------------------------------------------
  2. // MessageBoxScreen.cs
  3. // Adapted from NetworkStateManagement sample for Blackjack
  4. // Shows a simple message box with OK button
  5. //-----------------------------------------------------------------------------
  6. using System;
  7. using Microsoft.Xna.Framework;
  8. using GameStateManagement;
  9. using Microsoft.Xna.Framework.Graphics;
  10. namespace Blackjack
  11. {
  12. /// <summary>
  13. /// A popup screen that displays a message and waits for the user to acknowledge.
  14. /// </summary>
  15. class MessageBoxScreen : GameScreen
  16. {
  17. string message;
  18. MenuEntry okMenuEntry;
  19. public event EventHandler<PlayerIndexEventArgs> Accepted;
  20. public MessageBoxScreen(string message)
  21. {
  22. this.message = message;
  23. IsPopup = true;
  24. }
  25. public override void LoadContent()
  26. {
  27. okMenuEntry = new MenuEntry(Resources.OK);
  28. okMenuEntry.Selected += OkMenuEntrySelected;
  29. //MenuEntries.Add(okMenuEntry);
  30. base.LoadContent();
  31. }
  32. void OkMenuEntrySelected(object sender, PlayerIndexEventArgs e)
  33. {
  34. Accepted?.Invoke(this, e);
  35. ExitScreen();
  36. }
  37. public override void Draw(GameTime gameTime)
  38. {
  39. ScreenManager.FadeBackBufferToBlack(0.5f);
  40. SpriteBatch spriteBatch = ScreenManager.SpriteBatch;
  41. SpriteFont font = ScreenManager.Font;
  42. Vector2 viewportSize = new Vector2(
  43. ScreenManager.BaseScreenSize.X,
  44. ScreenManager.BaseScreenSize.Y);
  45. Vector2 textSize = font.MeasureString(message);
  46. Vector2 position = (viewportSize - textSize) / 2;
  47. spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, ScreenManager.GlobalTransformation);
  48. spriteBatch.DrawString(font, message, position, Color.White);
  49. spriteBatch.End();
  50. }
  51. }
  52. }