public void Start()
 {
     InitilizeGameStatus();
     MessageWriter.Greet();
     _gameBoard.Draw();
     Play();
 }
        /// <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);
        }