diff --git a/src/main/java/com/sinthoras/visualprospecting/Config.java b/src/main/java/com/sinthoras/visualprospecting/Config.java index 513e475..679c0a2 100644 --- a/src/main/java/com/sinthoras/visualprospecting/Config.java +++ b/src/main/java/com/sinthoras/visualprospecting/Config.java @@ -15,8 +15,8 @@ private static class Defaults { public static final int cacheGenerationLogUpdateMinTime = 5; public static final boolean recacheVeins = false; public static final int minDelayBetweenVeinRequests = 2000; - public static final int minZoomLevelForOreLabel = 2; - public static final int minZoomLevelForUndergroundFluidDetails = 3; + public static final int minZoomLevelForOreLabel = 1; + public static final int minZoomLevelForUndergroundFluidDetails = 2; public static final int uploadBandwidthBytes = 2000000; public static final int maxTransferCacheSizeMB = 50; public static final boolean enableVoxelMapWaypointsByDefault = false; diff --git a/src/main/java/com/sinthoras/visualprospecting/integration/model/render/OreLabelLayout.java b/src/main/java/com/sinthoras/visualprospecting/integration/model/render/OreLabelLayout.java new file mode 100644 index 0000000..5602a3b --- /dev/null +++ b/src/main/java/com/sinthoras/visualprospecting/integration/model/render/OreLabelLayout.java @@ -0,0 +1,11 @@ +package com.sinthoras.visualprospecting.integration.model.render; + +final class OreLabelLayout { + + private OreLabelLayout() {} + + static double staggerOffset(double blockX, double zoomStep, double labelHeight) { + // Ore columns are three chunks wide. Floor keeps alternation continuous across X = 0 + return zoomStep <= 1 && (((long) Math.floor(blockX / 48)) & 1) != 0 ? labelHeight + 1 : 0; + } +} diff --git a/src/main/java/com/sinthoras/visualprospecting/integration/model/render/OreVeinRenderStep.java b/src/main/java/com/sinthoras/visualprospecting/integration/model/render/OreVeinRenderStep.java index 56b940e..64b07f2 100644 --- a/src/main/java/com/sinthoras/visualprospecting/integration/model/render/OreVeinRenderStep.java +++ b/src/main/java/com/sinthoras/visualprospecting/integration/model/render/OreVeinRenderStep.java @@ -43,25 +43,26 @@ public void preRender(double topX, double topY, float drawScale, double zoom) { @Override public void draw(double topX, double topY, float drawScale, double zoom) { + final double labelScale = getLabelScale(); + final double labelOffset = (fontHeight + 5) * (isXaero ? 1 : labelScale) + + OreLabelLayout.staggerOffset(location.getBlockX(), getZoomStep(), (fontHeight + 2) * labelScale); // Xaero culling relies on Navigator's visible cache; add centered bounds if that cache grows costly. if (!isXaero) { final Minecraft mc = Minecraft.getMinecraft(); final double scale = 1.0; final double screenW = mc.displayWidth * scale; final double screenH = mc.displayHeight * scale; - final double topMargin = (fontHeight + 5) * getLabelScale() * scale; - if (topX + width < 0 || topX > screenW || topY + height < -topMargin || topY > screenH) { + if (topX + width < 0 || topX > screenW || topY + height < 0 || topY - labelOffset > screenH) { return; } } if (zoom >= Config.minZoomLevelForOreLabel && !location.isDepleted()) { - final double labelScale = getLabelScale(); final int fontColor = location.drawSearchHighlight() ? 0xFFFFFF : 0x7F7F7F; DrawUtils.drawLabel( location.getName(), topX + width / 2, - topY - (fontHeight + 5) * (isXaero ? 1 : labelScale), + topY - labelOffset, fontColor, 0, true, diff --git a/src/main/java/com/sinthoras/visualprospecting/integration/model/render/UndergroundFluidRenderStep.java b/src/main/java/com/sinthoras/visualprospecting/integration/model/render/UndergroundFluidRenderStep.java index 2229037..91a771a 100644 --- a/src/main/java/com/sinthoras/visualprospecting/integration/model/render/UndergroundFluidRenderStep.java +++ b/src/main/java/com/sinthoras/visualprospecting/integration/model/render/UndergroundFluidRenderStep.java @@ -54,8 +54,8 @@ public void draw(double topX, double topY, float drawScale, double zoom) { title = location.getFluid().getLocalizedName(); values = MessageFormat.format( "{0}-{1} L/Op", - formatAmount(location.getMinProduction()), - formatAmount(maxAmountInField)); + formatAmount(location.getMinProduction() >> 1), + formatAmount(maxAmountInField >> 1)); } int textColor = 0xFFFFFFFF; @@ -131,7 +131,7 @@ private void renderChunks(double x, double y) { if (drawLabels) { DrawUtils.drawLabel( - MessageFormat.format("{0} L/Op", formatAmount(amount)), + MessageFormat.format("{0} L/Op", formatAmount(amount >> 1)), cellX + cellW / 2, cellY + cellH / 2 + cellLabelOffsetY, 0xFFFFFFFF,