Пример #1
0
 /// <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);
 }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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];
        }