Exemplo n.º 1
0
        protected override void Update(GameTime gameTime)
        {
            //if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
            //	Exit();

            // TODO: Add your update logic here
            var mouseState = Mouse.GetState();
            var keyState   = Keyboard.GetState();

            if (!_prevMouseState.HasValue)
            {
                _prevMouseState = mouseState;
            }
            if (!_prevKeyState.HasValue)
            {
                _prevKeyState = keyState;
            }

            if (_gameState == GameState.MapEditor)
            {
                if (defaultFillMap)
                {
                    defaultFillMap = false;
                    _map.Fill(_tileSprites[0].Clone());
                }

                if (keyState.IsKeyDown(Keys.D1) && _prevKeyState.Value.IsKeyUp(Keys.D1))
                {
                    _activeSprite = _tileSprites[0];
                }
                if (keyState.IsKeyDown(Keys.D2) && _prevKeyState.Value.IsKeyUp(Keys.D2))
                {
                    _activeSprite = _tileSprites[1];
                }
                if (keyState.IsKeyDown(Keys.D3) && _prevKeyState.Value.IsKeyUp(Keys.D3))
                {
                    _activeSprite = _tileSprites[2];
                }
                if (keyState.IsKeyDown(Keys.D4) && _prevKeyState.Value.IsKeyUp(Keys.D4))
                {
                    _activeSprite = _tileSprites[3];
                }
                if (keyState.IsKeyDown(Keys.D5) && _prevKeyState.Value.IsKeyUp(Keys.D5))
                {
                    _activeSprite = _tileSprites[4];
                }
                if (keyState.IsKeyDown(Keys.D6) && _prevKeyState.Value.IsKeyUp(Keys.D6))
                {
                    _activeSprite = _tileSprites[5];
                }
                if (keyState.IsKeyDown(Keys.D7) && _prevKeyState.Value.IsKeyUp(Keys.D7))
                {
                    _activeSprite = _tileSprites[6];
                }
                if (keyState.IsKeyDown(Keys.D8) && _prevKeyState.Value.IsKeyUp(Keys.D8))
                {
                    _activeSprite = _tileSprites[7];
                }

                if (_activeSprite != null && mouseState.LeftButton == ButtonState.Pressed && _prevMouseState.Value.LeftButton == ButtonState.Released)
                {
                    _map.PlaceTile(_activeSprite.Clone(), mouseState.Position);
                }

                if (keyState.IsKeyDown(Keys.Escape))
                {
                    _gameState = GameState.Menu;
                }
            }
            else if (_gameState == GameState.Menu)
            {
                if (mouseState.LeftButton == ButtonState.Pressed && _prevMouseState.Value.LeftButton == ButtonState.Released)
                {
                    int buttonPressed = _mainMenu.CheckButtonPressed(new Rectangle(mouseState.X, mouseState.Y, 1, 1));

                    if (buttonPressed == (int)MainMenuButton.Quit)
                    {
                        this.Exit();
                    }
                    else if (buttonPressed == (int)MainMenuButton.MapEditor)
                    {
                        _gameState = GameState.MapEditor;
                    }
                    else if (buttonPressed == (int)MainMenuButton.StartGame)
                    {
                        _gameState = GameState.Game;
                    }
                }
            }
            else if (_gameState == GameState.Game)
            {
                //Make sure we fill the map if we never went to the editor!
                if (defaultFillMap)
                {
                    defaultFillMap = false;
                    _map.Fill(_tileSprites[0].Clone());
                }

                if (_pController == null)
                {
                    //We just switched to this so setup stuff
                    _pController = new PlayerController();
                    //We know that the clone creates it as a "Tank" so ok to force coversion
                    Tank player = (Tank)_baseTank.Clone();
                    _pController.Setup(player, _map, Point.Zero);
                }

                _pController.Update(mouseState, keyState, gameTime);
            }

            _prevMouseState = mouseState;
            _prevKeyState   = keyState;

            base.Update(gameTime);
        }