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); }