示例#1
0
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.Black);

            _spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, DepthStencilState.DepthRead);


            switch (_gameState)
            {
            case GameState.StartScreen:
                title.Render(_spriteBatch);
                start.Render(_spriteBatch);


                break;

            case GameState.GameScreen:
                WorldManager.WorldRender(_spriteBatch);
                Player.Render(_spriteBatch);
                SupernovaObject.Render(_spriteBatch);
                InfoBar.Render(_spriteBatch);
                break;

            case GameState.LoseScreen:
                font = Content.Load <SpriteFont>("BaseFont");
                String score = Player.Score.ToString();

                _spriteBatch.DrawString(
                    font,
                    "GAME OVER",
                    new Vector2(640 * Camera.GetWidthScalar(), 50),
                    Color.Red,
                    0,
                    new Vector2(font.MeasureString("GAME OVER").X / 2, 0),
                    Vector2.One,
                    SpriteEffects.None,
                    0);

                _spriteBatch.DrawString(
                    font,
                    "Score",
                    new Vector2(640 * Camera.GetWidthScalar(), 200),
                    Color.Gray,
                    0,
                    new Vector2(font.MeasureString("Score").X / 2, 0),
                    new Vector2(0.5F, 0.5F),
                    SpriteEffects.None,
                    0);

                _spriteBatch.DrawString(
                    font,
                    score,
                    new Vector2(
                        640 * Camera.GetWidthScalar(),
                        360 * Camera.GetHeightScalar()),
                    Color.White,
                    0,
                    new Vector2(font.MeasureString(score).X / 2, font.MeasureString(score).Y / 2),
                    Vector2.One,
                    SpriteEffects.None,
                    0);
                end.Render(_spriteBatch);
                break;

            default:
                throw new Exception("Unknown Game State");
            }

            base.Draw(gameTime);

            _spriteBatch.End();
        }