Fix map preview generation for isometric terrain

This commit is contained in:
abcdefg30
2019-03-08 16:33:31 +01:00
committed by reaperrr
parent 19b2cb0afb
commit 0524a59b6b

View File

@@ -664,6 +664,7 @@ namespace OpenRA
bitmapWidth = 2 * bitmapWidth - 1; bitmapWidth = 2 * bitmapWidth - 1;
var stride = bitmapWidth * 4; var stride = bitmapWidth * 4;
var pxStride = 4;
var minimapData = new byte[stride * height]; var minimapData = new byte[stride * height];
Color leftColor, rightColor; Color leftColor, rightColor;
for (var y = 0; y < height; y++) for (var y = 0; y < height; y++)
@@ -693,18 +694,19 @@ namespace OpenRA
{ {
// Odd rows are shifted right by 1px // Odd rows are shifted right by 1px
var dx = uv.V & 1; var dx = uv.V & 1;
var xOffset = pxStride * (2 * x + dx);
if (x + dx > 0) if (x + dx > 0)
{ {
var z = y * stride + 8 * x + dx - 4; var z = y * stride + xOffset - pxStride;
minimapData[z++] = leftColor.R; minimapData[z++] = leftColor.R;
minimapData[z++] = leftColor.G; minimapData[z++] = leftColor.G;
minimapData[z++] = leftColor.B; minimapData[z++] = leftColor.B;
minimapData[z++] = leftColor.A; minimapData[z++] = leftColor.A;
} }
if (2 * x + dx < stride) if (xOffset < stride)
{ {
var z = y * stride + 8 * x + dx; var z = y * stride + xOffset;
minimapData[z++] = rightColor.R; minimapData[z++] = rightColor.R;
minimapData[z++] = rightColor.G; minimapData[z++] = rightColor.G;
minimapData[z++] = rightColor.B; minimapData[z++] = rightColor.B;
@@ -713,7 +715,7 @@ namespace OpenRA
} }
else else
{ {
var z = y * stride + 4 * x; var z = y * stride + pxStride * x;
minimapData[z++] = leftColor.R; minimapData[z++] = leftColor.R;
minimapData[z++] = leftColor.G; minimapData[z++] = leftColor.G;
minimapData[z++] = leftColor.B; minimapData[z++] = leftColor.B;