Split up overlay and underlay drawing and move to functions
This commit is contained in:
@@ -123,6 +123,66 @@ public class MapImageDumper
|
||||
|
||||
BufferedImage image = new BufferedImage(dimX, dimY, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
drawUnderlay(image, z);
|
||||
drawOverlay(image, z);
|
||||
|
||||
// objects
|
||||
for (Region region : regions)
|
||||
{
|
||||
int baseX = region.getBaseX();
|
||||
int baseY = region.getBaseY();
|
||||
|
||||
// to pixel X
|
||||
int drawBaseX = baseX - lowestX.getBaseX();
|
||||
|
||||
// to pixel Y. top most y is 0, but the top most
|
||||
// region has the greaters y, so invert
|
||||
int drawBaseY = highestY.getBaseY() - baseY;
|
||||
|
||||
Graphics2D graphics = image.createGraphics();
|
||||
|
||||
drawObjects(graphics, region, z, drawBaseX, drawBaseY);
|
||||
|
||||
graphics.dispose();
|
||||
}
|
||||
|
||||
// map icons
|
||||
for (Region region : regions)
|
||||
{
|
||||
int baseX = region.getBaseX();
|
||||
int baseY = region.getBaseY();
|
||||
|
||||
// to pixel X
|
||||
int drawBaseX = baseX - lowestX.getBaseX();
|
||||
|
||||
// to pixel Y. top most y is 0, but the top most
|
||||
// region has the greaters y, so invert
|
||||
int drawBaseY = highestY.getBaseY() - baseY;
|
||||
|
||||
Graphics2D graphics = image.createGraphics();
|
||||
|
||||
drawMapIcons(graphics, region, z, drawBaseX, drawBaseY);
|
||||
|
||||
if (labelRegions)
|
||||
{
|
||||
graphics.setColor(Color.WHITE);
|
||||
graphics.drawString(baseX + "," + baseY, drawBaseX * MAP_SCALE, drawBaseY * MAP_SCALE + graphics.getFontMetrics().getHeight());
|
||||
}
|
||||
|
||||
if (outlineRegions)
|
||||
{
|
||||
graphics.setColor(Color.WHITE);
|
||||
graphics.drawRect(drawBaseX * MAP_SCALE, drawBaseY * MAP_SCALE, Region.X * MAP_SCALE, Region.Y * MAP_SCALE);
|
||||
}
|
||||
|
||||
graphics.dispose();
|
||||
}
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
private void drawUnderlay(BufferedImage image, int z)
|
||||
{
|
||||
// pass 1
|
||||
for (Region region : regions)
|
||||
{
|
||||
@@ -156,7 +216,49 @@ public class MapImageDumper
|
||||
UnderlayDefinition underlay = findUnderlay(underlayId);
|
||||
rgb = underlay.getColor();
|
||||
}
|
||||
else
|
||||
}
|
||||
else if (underlayId > -1)
|
||||
{
|
||||
UnderlayDefinition underlay = findUnderlay(underlayId);
|
||||
rgb = underlay.getColor();
|
||||
}
|
||||
|
||||
drawMapSquare(image, drawX, drawY, rgb);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void drawOverlay(BufferedImage image, int z)
|
||||
{
|
||||
for (Region region : regions)
|
||||
{
|
||||
int baseX = region.getBaseX();
|
||||
int baseY = region.getBaseY();
|
||||
|
||||
// to pixel X
|
||||
int drawBaseX = baseX - lowestX.getBaseX();
|
||||
|
||||
// to pixel Y. top most y is 0, but the top most
|
||||
// region has the greaters y, so invert
|
||||
int drawBaseY = highestY.getBaseY() - baseY;
|
||||
|
||||
for (int x = 0; x < Region.X; ++x)
|
||||
{
|
||||
int drawX = drawBaseX + x;
|
||||
|
||||
for (int y = 0; y < Region.Y; ++y)
|
||||
{
|
||||
int drawY = drawBaseY + (Region.Y - 1 - y);
|
||||
|
||||
int overlayId = region.getOverlayId(z, x, y) - 1;
|
||||
|
||||
if (overlayId > -1)
|
||||
{
|
||||
OverlayDefinition overlay = findOverlay(overlayId);
|
||||
|
||||
int rgb = 0;
|
||||
if (overlay.isHideUnderlay())
|
||||
{
|
||||
rgb = overlay.getRgbColor();
|
||||
}
|
||||
@@ -176,71 +278,12 @@ public class MapImageDumper
|
||||
|
||||
rgb = averageColors.get(sprite);
|
||||
}
|
||||
}
|
||||
else if (underlayId > -1)
|
||||
{
|
||||
UnderlayDefinition underlay = findUnderlay(underlayId);
|
||||
rgb = underlay.getColor();
|
||||
}
|
||||
|
||||
drawMapSquare(image, drawX, drawY, rgb);
|
||||
drawMapSquare(image, drawX, drawY, rgb);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// pass 2
|
||||
for (Region region : regions)
|
||||
{
|
||||
int baseX = region.getBaseX();
|
||||
int baseY = region.getBaseY();
|
||||
|
||||
// to pixel X
|
||||
int drawBaseX = baseX - lowestX.getBaseX();
|
||||
|
||||
// to pixel Y. top most y is 0, but the top most
|
||||
// region has the greaters y, so invert
|
||||
int drawBaseY = highestY.getBaseY() - baseY;
|
||||
|
||||
Graphics2D graphics = image.createGraphics();
|
||||
|
||||
drawObjects(graphics, region, z, drawBaseX, drawBaseY);
|
||||
|
||||
graphics.dispose();
|
||||
}
|
||||
|
||||
// pass 3
|
||||
for (Region region : regions)
|
||||
{
|
||||
int baseX = region.getBaseX();
|
||||
int baseY = region.getBaseY();
|
||||
|
||||
// to pixel X
|
||||
int drawBaseX = baseX - lowestX.getBaseX();
|
||||
|
||||
// to pixel Y. top most y is 0, but the top most
|
||||
// region has the greaters y, so invert
|
||||
int drawBaseY = highestY.getBaseY() - baseY;
|
||||
|
||||
Graphics2D graphics = image.createGraphics();
|
||||
|
||||
drawMapIcons(graphics, region, z, drawBaseX, drawBaseY);
|
||||
|
||||
if (labelRegions)
|
||||
{
|
||||
graphics.setColor(Color.WHITE);
|
||||
graphics.drawString(baseX + "," + baseY, drawBaseX * MAP_SCALE, drawBaseY * MAP_SCALE + graphics.getFontMetrics().getHeight());
|
||||
}
|
||||
|
||||
if (outlineRegions)
|
||||
{
|
||||
graphics.setColor(Color.WHITE);
|
||||
graphics.drawRect(drawBaseX * MAP_SCALE, drawBaseY * MAP_SCALE, Region.X * MAP_SCALE, Region.Y * MAP_SCALE);
|
||||
}
|
||||
|
||||
graphics.dispose();
|
||||
}
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
private void drawMapSquare(BufferedImage image, int x, int y, int rgb)
|
||||
|
||||
Reference in New Issue
Block a user