/// <summary> /// Constructor for the screen /// </summary> /// <param name="game">The instance of the game.</param> public LevelLoadingScreen(GammaDraconis game) : base(game, GammaDraconis.GameStates.Game) { loadingText = new Text(gammaDraconis); loadingText.color = Color.White; loadingText.text = loadingTextValue; loadingText.SpriteFontName = "Resources/Fonts/Menu"; loadingText.RelativePosition = new Vector2(game.Window.ClientBounds.Width / 2, game.Window.ClientBounds.Height / 2); loadingText.center = true; screenInterface.AddComponent(loadingText); }
/// <summary> /// Default constructor. /// </summary> /// <param name="game">The game instance.</param> public ControlsMenu(GammaDraconis game) : base(game) { skybox = new Skybox(); screenScene.track(skybox, GO_TYPE.SKYBOX); xbox360PadFront = new Sprite(game); xbox360PadFront.textureName = "Resources/Textures/Xbox 360 Controller Front"; xbox360PadFront.RelativePosition = new Vector2(112.0f, 100.0f); screenInterface.AddComponent(xbox360PadFront); xbox360PadTop = new Sprite(game); xbox360PadTop.textureName = "Resources/Textures/Xbox 360 Controller Top"; xbox360PadTop.RelativePosition = new Vector2(112.0f, 480.0f); screenInterface.AddComponent(xbox360PadTop); keyboardWASD = new Text(game, "W - Accelerate Forward\nS - Accelerate Backward\nA - Roll Left\nD - Roll Right\n" + "Arrow Keys - Steer Ship/Navigate Menus\n\nSpace - Fire Beam Weapons\nEnter - Fire Mine Weapons\nQ - Reset Ship\n\n" + "P - Pause\nEnter - Start Game\nEsc - Back/Quit Game"); keyboardWASD.RelativePosition = new Vector2(1024 / 2, 768 / 2); keyboardWASD.center = true; keyboardWASD.color = Color.White; keyboardWASD.SpriteFontName = "Resources/Fonts/Menu"; screenInterface.AddComponent(keyboardWASD); keyboardNumPad = new Text(game, "0 - Accelerate Forward\n5 - Accelerate Backward\n7 - Roll Left\n9 - Roll Right\n" + "Arrow Keys - Steer Ship/Navigate Menus\n\n1 - Fire Beam Weapons\n3 - Fire Mine Weapons\n. - Reset Ship\n\n" + "P - Pause\nEnter - Start Game\nEsc - Back/Quit Game"); keyboardNumPad.RelativePosition = new Vector2(1024 / 2, 768 / 2); keyboardNumPad.center = true; keyboardNumPad.color = Color.White; keyboardNumPad.SpriteFontName = "Resources/Fonts/Menu"; screenInterface.AddComponent(keyboardNumPad); pageSelector = new Selector(game, "Xbox 360 Controller", "Keyboard - WASD", "Keyboard - NumPad"); pageSelector.RelativePosition = new Vector2(1024 / 2, 40.0f); pageSelector.center = true; pageSelector.color = Color.White; pageSelector.SpriteFontName = "Resources/Fonts/Menu"; screenInterface.AddComponent(pageSelector); }
/// <summary> /// Constructor for the screen. /// </summary> /// <param name="game">The instance of the game.</param> public LevelOverScreen(GammaDraconis game) : base(game, GammaDraconis.GameStates.MainMenu) { resultText = new Text(gammaDraconis); resultText.color = Color.White; resultText.text = ""; resultText.SpriteFontName = "Resources/Fonts/Menu"; resultText.RelativePosition = new Vector2(1024 / 2, 768 / 2); resultText.center = true; screenInterface.AddComponent(resultText); titleText = new Text(gammaDraconis, "Race Results"); titleText.color = Color.White; titleText.SpriteFontName = "Resources/Fonts/Title"; titleText.center = true; titleText.RelativePosition = new Vector2(1024 / 2, 50); titleText.RelativeScale = new Vector2(0.9f, 0.9f); screenInterface.AddComponent(titleText); skybox = new Skybox(); screenScene.track(skybox, GO_TYPE.SKYBOX); }
/// <summary> /// Render a frame of video containing the given Scene and Interface. /// The Scene manager includes the world, and all contained models. /// The interface is drawn last to show a Menu or HUD. /// </summary> /// <param name="gameTime">Game time</param> /// <param name="scene">The scene manager</param> /// <param name="drawHUD">Whether or not the HUD should be drawn.</param> public void render(GameTime gameTime, Scene scene, bool drawHUD) { renderBloom = false; // Render all players' viewports for (int playerIndex = 0; playerIndex < Player.players.Length; playerIndex++) { if (Player.players[playerIndex] != null) { game.GraphicsDevice.Viewport = viewports[(int)Player.players[playerIndex].viewport]; game.GraphicsDevice.Clear(ClearOptions.DepthBuffer | ClearOptions.Target, Color.Black, 1.0f, 0); game.GraphicsDevice.RenderState.DepthBufferEnable = true; aspectRatio = game.GraphicsDevice.Viewport.AspectRatio; List<GameObject> gameObjects = scene.visible(Player.players[playerIndex]); renderObjects(gameObjects, Player.players[playerIndex]); } else { if (MissingPlayerViewports[playerIndex] != Viewports.None) { game.GraphicsDevice.Viewport = viewports[(int)MissingPlayerViewports[playerIndex]]; game.GraphicsDevice.Clear(ClearOptions.DepthBuffer | ClearOptions.Target, Color.Black, 1.0f, 0); Interface i = new Interface(game); Text t = new Text(game); t.SpriteFontName = "Resources/Fonts/Menu"; t.text = missingPlayerQuips[(gameTime.TotalRealTime.Seconds / secondsPerQuip) % missingPlayerQuips.Length]; t.center = true; t.RelativePosition = new Vector2(game.GraphicsDevice.Viewport.Width / 2, game.GraphicsDevice.Viewport.Height / 2); t.color = Color.WhiteSmoke; i.AddComponent(t); i.Draw(gameTime, Vector2.Zero, Vector2.One, 0); // TODO: Draw something noteworthy in the empty slots? } } } game.GraphicsDevice.Viewport = viewports[(int)Viewports.WholeWindow]; // TODO: Render post-process shaders if (enableShaders) { renderBloom = true; bloomShader.Reset(); // Render all players' viewports for (int playerIndex = 0; playerIndex < Player.players.Length; playerIndex++) { if (Player.players[playerIndex] != null) { game.GraphicsDevice.Viewport = viewports[(int)Player.players[playerIndex].viewport]; game.GraphicsDevice.Clear(ClearOptions.DepthBuffer | ClearOptions.Target, Color.Black, 1.0f, 0); game.GraphicsDevice.RenderState.DepthBufferEnable = true; aspectRatio = game.GraphicsDevice.Viewport.AspectRatio; List<GameObject> gameObjects = scene.visible(Player.players[playerIndex]); renderObjects(gameObjects, Player.players[playerIndex]); } else { if (MissingPlayerViewports[playerIndex] != Viewports.None) { game.GraphicsDevice.Viewport = viewports[(int)MissingPlayerViewports[playerIndex]]; game.GraphicsDevice.Clear(ClearOptions.DepthBuffer | ClearOptions.Target, Color.Black, 1.0f, 0); Interface i = new Interface(game); Text t = new Text(game); t.SpriteFontName = "Resources/Fonts/Menu"; t.text = missingPlayerQuips[(gameTime.TotalRealTime.Seconds / secondsPerQuip) % missingPlayerQuips.Length]; t.center = true; t.RelativePosition = new Vector2(game.GraphicsDevice.Viewport.Width / 2, game.GraphicsDevice.Viewport.Height / 2); t.color = Color.WhiteSmoke; i.AddComponent(t); i.Draw(gameTime, Vector2.Zero, Vector2.One, 0); // TODO: Draw something noteworthy in the empty slots? } } } bloomShader.Render(); } // Render players' HUDs if (drawHUD) { for (int playerIndex = 0; playerIndex < Player.players.Length; playerIndex++) { if (Player.players[playerIndex] != null) { game.GraphicsDevice.Viewport = viewports[(int)Player.players[playerIndex].viewport]; Vector2 scale = new Vector2(game.GraphicsDevice.Viewport.Width / 1024.0f, game.GraphicsDevice.Viewport.Height / 768.0f); Player.players[playerIndex].playerHUD.Draw(gameTime, Vector2.Zero, scale, 0); } } } // Reset viewports game.GraphicsDevice.Viewport = viewports[(int)Viewports.WholeWindow]; }