/// <summary> /// This is called when the game should draw itself. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.White); _gameBoard.Draw(); var currentMouse = Mouse.GetState(); var pos = new Vector2(currentMouse.X, currentMouse.Y); if (pos.X > 0 && pos.Y > 0) { GameContent.Sb.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend); // show the q,r coordinates string output = pos.X + "," + pos.Y + " cell:" + _selectedHex.Col + "," + _selectedHex.Row; GameContent.Sb.DrawString(GameContent.Arial10Font, output, new Vector2(2, 2), Color.Black, 0, new Vector2(0, 0), 1.0f, SpriteEffects.None, 0.5f); GameContent.Sb.End(); } if (_mouseState.LeftButton == ButtonState.Pressed) { _mouseButtonWasPressed = true; if (_mouseDragStart == Vector2.Zero) { // user just clicked _gameBoard.SelectUnit(_mouseState.X, _mouseState.Y); _mouseDragStart = new Vector2(_mouseState.X, _mouseState.Y); } else { // user is dragging _gameBoard.PlayerDrawRoute(_mouseState.X, _mouseState.Y); } } else if (_mouseButtonWasPressed) { _gameBoard.PlayerUnitMouseUp(_mouseState.X, _mouseState.Y); _mouseDragStart = Vector2.Zero; _mouseButtonWasPressed = false; _gameBoard.ShowUnitRangeMask = false; } var result = _gameBoard.CheckForEndOfGameCondition(); if (result != "") { // Game ended Window.Title = result; } base.Draw(gameTime); }