public void DrawLineSegment(Vector2 point1, Vector2 point2, Color color, int lineWidth) { float angle = (float)Math.Atan2(point2.Y - point1.Y, point2.X - point1.X); float length = Vector2.Distance(point1, point2); spriteBatch.End(); spriteBatch.Begin(); spriteBatch.Draw(_line, point1, null, color, angle, Vector2.Zero, new Vector2(length, lineWidth), SpriteEffects.None, 0f); } public void DrawHex(Vector2 hexLocation, bool selectedColor) { Color borderColor; if (selectedColor) { _line.SetData(new[] { _selectedLineColor }); borderColor = _selectedLineColor; } else { _line.SetData(new[] { _lineColor }); borderColor = _lineColor; } DrawLineSegment(new Vector2(hexLocation.X + _hexWidth - _hexSide, hexLocation.Y), new Vector2(hexLocation.X + _hexSide, hexLocation.Y), borderColor, _lineWidth); DrawLineSegment(new Vector2(hexLocation.X + _hexSide, hexLocation.Y), new Vector2(hexLocation.X + _hexWidth, hexLocation.Y + (_hexHeight / 2)), borderColor, _lineWidth ); DrawLineSegment(new Vector2(hexLocation.X + _hexWidth, hexLocation.Y + (_hexHeight / 2)), new Vector2(hexLocation.X + _hexSide, hexLocation.Y + _hexHeight), borderColor, _lineWidth ); DrawLineSegment(new Vector2(hexLocation.X + _hexSide, hexLocation.Y + _hexHeight), new Vector2(hexLocation.X + _hexWidth - _hexSide, hexLocation.Y + _hexHeight), borderColor, _lineWidth); DrawLineSegment(new Vector2(hexLocation.X + _hexWidth - _hexSide, hexLocation.Y + _hexHeight), new Vector2(hexLocation.X, hexLocation.Y + (_hexHeight / 2)), borderColor, _lineWidth); DrawLineSegment(new Vector2(hexLocation.X, hexLocation.Y + (_hexHeight / 2)), new Vector2(hexLocation.X + _hexWidth - _hexSide, hexLocation.Y), borderColor, _lineWidth); }