Esempio n. 1
0
        protected override void Update(GameTime gameTime)
        {
            System.Threading.Thread.Sleep(5);

            Camera.Update(GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height);

            MouseState    mouseState    = Mouse.GetState();
            KeyboardState keyBoardState = Keyboard.GetState();

            if (Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            switch (_gameState)
            {
            case GameState.StartScreen:

                if (start.Tick(mouseState.X, mouseState.Y) && mouseState.LeftButton == ButtonState.Pressed && _delay <= 0)
                {
                    _gameState = GameState.GameScreen;
                    _delay     = 10;
                    Camera.SetX(0);
                    Camera.SetY(0);
                    Update(gameTime);
                }
                break;

            case GameState.GameScreen:

                if (keyBoardState.IsKeyDown(Keys.A))
                {
                    Player.Angle -= .075f;
                    Player.Angle  = Player.Angle < 0 ? Player.Angle + (float)Math.PI * 2: Player.Angle;
                }


                if (keyBoardState.IsKeyDown(Keys.D))
                {
                    Player.Angle += .075f;
                    Player.Angle %= (float)Math.PI * 2;
                }

                if (keyBoardState.IsKeyDown(Keys.W) && Player.Fuel > 0)
                {
                    Player.AddToVelocity(.13f * WorldManager.AccelerationModifier, Player.Angle);
                    Player.Fuel -= 0.1f;
                }

                if (Player.Health <= 0)
                {
                    _gameState = GameState.LoseScreen;
                    Update(gameTime);
                }

                WorldManager.WorldTick();
                WorldManager.WorldTick2();
                Player.Tick();
                SupernovaObject.Tick();

                break;

            case GameState.LoseScreen:
                if (end.Tick(mouseState.X, mouseState.Y) && mouseState.LeftButton == ButtonState.Pressed && _delay <= 0)
                {
                    _gameState = GameState.StartScreen;
                    Player.Reset();
                    SupernovaObject.Reset();
                    WorldManager.Reset();
                    _delay = 10;
                    Camera.SetX(0);
                    Camera.SetY(0);
                    Update(gameTime);
                }
                break;

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

            _delay = Math.Max(_delay - 1, 0);

            base.Update(gameTime);
        }
Esempio n. 2
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();
        }