feat: vertical tanks tree connections added

This commit is contained in:
Mikhail Shabanov committed 2022-08-22 15:16:05 +02:00
1 parent 5a60c8e906
commit 1081d6297f
9 files changed
+85 -46

No files matched your search

@@ -12,11 +12,16 @@ namespace WotBlitzStatisticsPro.Blazor.Services
// Tank Tree dimensions
const int CardMargin = 20;
private readonly int _halfMargin;
private readonly int _quarterMargin;
// Tank Tree path corners
private readonly string _leftDown;
private readonly string _rightDown;
private readonly string _leftUp;
private readonly string _rightUp;
private readonly string _upRight;
private readonly string _upLeft;
private readonly IJSRuntime _jsRuntime;
@@ -24,13 +29,15 @@ namespace WotBlitzStatisticsPro.Blazor.Services
{
_jsRuntime = jsRuntime;
int halfMargin = CardMargin / 2;
int quarterMargin = CardMargin / 4;
_halfMargin = CardMargin / 2;
_quarterMargin = CardMargin / 4;
_leftDown = $"h {halfMargin} c {quarterMargin} 0, {halfMargin} {quarterMargin}, {halfMargin} {halfMargin}";
_rightDown = $"c 0 {quarterMargin}, {quarterMargin} {halfMargin}, {halfMargin} {halfMargin} h {halfMargin}";
_leftUp = $"h {halfMargin} c {quarterMargin} 0, {halfMargin} -{quarterMargin}, {halfMargin} -{halfMargin}";
_rightUp = $"c 0 -{quarterMargin}, {quarterMargin} -{halfMargin}, {halfMargin} -{halfMargin} h {halfMargin}";
_leftDown = $"c {_quarterMargin} 0, {_halfMargin} {_quarterMargin}, {_halfMargin} {_halfMargin}";
_rightDown = $"c 0 {_quarterMargin}, {_quarterMargin} {_halfMargin}, {_halfMargin} {_halfMargin}";
_leftUp = $"c {_quarterMargin} 0, {_halfMargin} -{_quarterMargin}, {_halfMargin} -{_halfMargin}";
_rightUp = $"c 0 -{_quarterMargin}, {_quarterMargin} -{_halfMargin}, {_halfMargin} -{_halfMargin}";
_upRight = $"c 0 -{_quarterMargin}, -{_quarterMargin} -{_halfMargin}, -{_halfMargin} -{_halfMargin}";
_upLeft = $"c -{_quarterMargin} 0, -{_halfMargin} -{_quarterMargin}, -{_halfMargin} -{_halfMargin}";
}
public ElementDimensions CalculateTextBlockSize(string text, string fontFace, int fontSize)
@@ -51,8 +58,6 @@ namespace WotBlitzStatisticsPro.Blazor.Services
int startXPoint = (tierStart - 1) * (cardWidth + horizontalMargin) + cardWidth + CardMargin;
int startYpoint = rowStart * (cardHeight + CardMargin) + (cardHeight / 2) + CardMargin;
int stopYPoint = rowEnd * (cardHeight + CardMargin) + (cardHeight / 2) + CardMargin;
var path = new StringBuilder($"M {startXPoint} {startYpoint}");
if(rowStart == rowEnd)
{
@@ -60,19 +65,61 @@ namespace WotBlitzStatisticsPro.Blazor.Services
return path.ToString();
}
int stopYPoint = rowEnd * (cardHeight + CardMargin) + (cardHeight / 2) + CardMargin;
int verticalLineHeight = Math.Abs(stopYPoint - startYpoint) - CardMargin;
if(rowStart < rowEnd)
{
path.AppendLine($"h {_halfMargin}");
path.AppendLine(_leftDown);
path.AppendLine($"v {verticalLineHeight}");
path.AppendLine(_rightDown);
path.AppendLine($"h {_halfMargin}");
}
else
{
path.AppendLine($"h {_halfMargin}");
path.AppendLine(_leftUp);
path.AppendLine($"v -{verticalLineHeight}");
path.AppendLine(_rightUp);
path.AppendLine($"h {_halfMargin}");
}
return path.ToString();
}
public string TankTreeConnectionVerticalPath(int rowStart, int rowEnd, int tierStart, int cardWidth, int cardHeight, int leftMargin)
{
int verticalMargin = 2 * CardMargin;
int startYPoint = (10 - tierStart) * (cardWidth + verticalMargin) + CardMargin;
int startXPoint = rowStart * (cardHeight + CardMargin) + (cardHeight / 2) + CardMargin + leftMargin;
var path = new StringBuilder($"M {startXPoint} {startYPoint}");
if (rowStart == rowEnd)
{
path.AppendLine($"v -{verticalMargin}");
return path.ToString();
}
int stopXPoint = rowEnd * (cardHeight + CardMargin) + (cardHeight / 2) + CardMargin + leftMargin;
int horizontalWidth = Math.Abs(stopXPoint - startXPoint) - CardMargin;
if (rowStart < rowEnd)
{
path.AppendLine($"v -{_halfMargin}");
path.AppendLine(_rightUp);
path.AppendLine($"h {horizontalWidth}");
path.AppendLine(_leftUp);
path.AppendLine($"v -{_halfMargin}");
}
else
{
path.AppendLine($"v -{_halfMargin}");
path.AppendLine(_upRight);
path.AppendLine($"h -{horizontalWidth}");
path.AppendLine(_upLeft);
path.AppendLine($"v -{_halfMargin}");
}
return path.ToString();