VictoryScreen.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #region File Description
  2. //-----------------------------------------------------------------------------
  3. // VictoryScreen.cs
  4. //
  5. // Microsoft XNA Community Game Platform
  6. // Copyright (C) Microsoft Corporation. All rights reserved.
  7. //-----------------------------------------------------------------------------
  8. #endregion
  9. #region Using Statements
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Text;
  13. using Microsoft.Xna.Framework;
  14. using Microsoft.Xna.Framework.Graphics;
  15. #endregion
  16. namespace Spacewar
  17. {
  18. /// <summary>
  19. /// The 'Player X won' screen
  20. /// </summary>
  21. public class VictoryScreen : FullScreenSplash
  22. {
  23. private static string victoryScreen = @"textures\victory";
  24. private int winningPlayerNumber;
  25. private SceneItem ship;
  26. /// <summary>
  27. /// Makes a new splash screen with the right texture, no timeout and will move to the logo screen
  28. /// </summary>
  29. public VictoryScreen(Game game)
  30. : base(game, victoryScreen, TimeSpan.Zero, GameState.LogoSplash)
  31. {
  32. Sound.PlayCue(Sounds.TitleMusic);
  33. //Whoever won we need to render their ship.
  34. winningPlayerNumber = (SpacewarGame.Players[0].Score > SpacewarGame.Players[1].Score) ? 0 : 1;
  35. Player winningPlayer = SpacewarGame.Players[winningPlayerNumber];
  36. ship = new SceneItem(game, new EvolvedShape(game, EvolvedShapes.Ship, (winningPlayerNumber == 0) ? PlayerIndex.One : PlayerIndex.Two, (int)winningPlayer.ShipClass, winningPlayer.Skin, LightingType.Menu), new Vector3(-90, -30, 0));
  37. ship.Scale = new Vector3(.07f, .07f, .07f);
  38. scene.Add(ship);
  39. }
  40. /// <summary>
  41. /// Updates the scene
  42. /// </summary>
  43. /// <param name="time">Current Game time</param>
  44. /// <param name="elapsedTime">Elapsed Game time since last update</param>
  45. /// <returns></returns>
  46. public override GameState Update(TimeSpan time, TimeSpan elapsedTime)
  47. {
  48. ship.Rotation = new Vector3(-.3f, (float)time.TotalSeconds, 0);
  49. return base.Update(time, elapsedTime);
  50. }
  51. /// <summary>
  52. /// Renders the victory screen
  53. /// </summary>
  54. public override void Render()
  55. {
  56. //Render everything else
  57. base.Render();
  58. //Change the 'player1' to player2 if player2 won
  59. if (winningPlayerNumber == 1) //player2 won
  60. {
  61. IGraphicsDeviceService graphicsService = (IGraphicsDeviceService)game.Services.GetService(typeof(IGraphicsDeviceService));
  62. GraphicsDevice device = graphicsService.GraphicsDevice;
  63. Texture2D mainTexture = SpacewarGame.ContentManager.Load<Texture2D>(SpacewarGame.Settings.MediaPath + victoryScreen);
  64. SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Opaque);
  65. device.DepthStencilState = DepthStencilState.DepthRead;
  66. SpriteBatch.Draw(mainTexture, new Vector2(320, 525), new Rectangle(50, 730, 320, 85), Color.White);
  67. SpriteBatch.End();
  68. }
  69. }
  70. public override void OnCreateDevice()
  71. {
  72. base.OnCreateDevice();
  73. ship.ShapeItem.OnCreateDevice();
  74. }
  75. }
  76. }