From 063b5255f1b6b548d9f3a13aa44d53287803654c Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Fri, 23 Feb 2024 13:59:05 +0500 Subject: [PATCH] Refactor rendering code to use integers Signed-off-by: Octol1ttle --- .../flightassistant/Dimensions.java | 6 +-- .../flightassistant/HudComponent.java | 47 +++++++++-------- .../flightassistant/alerts/AbstractAlert.java | 4 +- .../autoflight/AutoFireworkOffAlert.java | 2 +- .../alerts/autoflight/AutopilotOffAlert.java | 2 +- .../alerts/fault/ComputerFaultAlert.java | 2 +- .../alerts/fault/IndicatorFaultAlert.java | 2 +- .../firework/FireworkNoResponseAlert.java | 2 +- .../alerts/firework/FireworkUnsafeAlert.java | 2 +- .../nav/ApproachingVoidDamageLevelAlert.java | 2 +- .../nav/gpws/ExcessiveDescentAlert.java | 2 +- .../gpws/ExcessiveTerrainClosureAlert.java | 2 +- .../alerts/other/ElytraHealthLowAlert.java | 2 +- .../alerts/other/StallAlert.java | 2 +- .../indicators/AlertIndicator.java | 4 +- .../indicators/AltitudeIndicator.java | 22 ++++---- .../indicators/ElytraHealthIndicator.java | 6 +-- .../indicators/FlightDirectorsIndicator.java | 8 +-- .../indicators/FlightMode.java | 2 +- .../indicators/FlightModeIndicator.java | 19 +++---- .../indicators/FlightPathIndicator.java | 17 +++--- .../indicators/HeadingIndicator.java | 17 +++--- .../indicators/LocationIndicator.java | 9 ++-- .../indicators/PitchIndicator.java | 52 +++++++++---------- .../indicators/SpeedIndicator.java | 29 ++++++----- .../indicators/StatusIndicator.java | 6 +-- 26 files changed, 139 insertions(+), 131 deletions(-) diff --git a/src/main/java/ru/octol1ttle/flightassistant/Dimensions.java b/src/main/java/ru/octol1ttle/flightassistant/Dimensions.java index 0d3b6621..25efc037 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/Dimensions.java +++ b/src/main/java/ru/octol1ttle/flightassistant/Dimensions.java @@ -20,10 +20,10 @@ public class Dimensions { public int bFrame; public void update(DrawContext context, double fov) { - hScreen = MathHelper.ceil(context.getScaledWindowHeight() / FAConfig.get().hudScale); - wScreen = MathHelper.ceil(context.getScaledWindowWidth() / FAConfig.get().hudScale); + hScreen = MathHelper.floor(context.getScaledWindowHeight() / FAConfig.get().hudScale); + wScreen = MathHelper.floor(context.getScaledWindowWidth() / FAConfig.get().hudScale); - degreesPerPixel = MathHelper.ceil(hScreen / fov); + degreesPerPixel = MathHelper.floor(hScreen / fov); xMid = wScreen / 2; yMid = hScreen / 2; diff --git a/src/main/java/ru/octol1ttle/flightassistant/HudComponent.java b/src/main/java/ru/octol1ttle/flightassistant/HudComponent.java index d2c5eb07..d2249788 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/HudComponent.java +++ b/src/main/java/ru/octol1ttle/flightassistant/HudComponent.java @@ -14,27 +14,27 @@ public static MutableText asText(String format, Object... args) { return Text.literal(String.format(format, args)); } - public static void fill(DrawContext context, float x1, float y1, float x2, float y2, Color color) { - context.fill(Math.round(x1), Math.round(y1), Math.round(x2), Math.round(y2), color.getRGB()); + public static void fill(DrawContext context, int x1, int y1, int x2, int y2, Color color) { + context.fill(x1, y1, x2, y2, color.getRGB()); } - protected static void drawRightAlignedText(TextRenderer textRenderer, DrawContext context, Text text, float x, float y, Color color) { + protected static void drawRightAlignedText(TextRenderer textRenderer, DrawContext context, Text text, int x, int y, Color color) { drawText(textRenderer, context, text, x - textRenderer.getWidth(text), y, color); } - public static int drawText(TextRenderer textRenderer, DrawContext context, Text text, float x, float y, Color color) { - context.drawText(textRenderer, text, Math.round(x), Math.round(y), color.getRGB(), false); + public static int drawText(TextRenderer textRenderer, DrawContext context, Text text, int x, int y, Color color) { + context.drawText(textRenderer, text, x, y, color.getRGB(), false); return SINGLE_LINE_DRAWN; } - public static void drawMiddleAlignedText(TextRenderer textRenderer, DrawContext context, Text text, float x, float y, Color color) { - drawText(textRenderer, context, text, x - textRenderer.getWidth(text) * 0.5f, y, color); + public static void drawMiddleAlignedText(TextRenderer textRenderer, DrawContext context, Text text, int x, int y, Color color) { + drawText(textRenderer, context, text, x - textRenderer.getWidth(text) / 2, y, color); } - public static int drawHighlightedText(TextRenderer textRenderer, DrawContext context, Text text, float x, float y, Color color, boolean highlight) { + public static int drawHighlightedText(TextRenderer textRenderer, DrawContext context, Text text, int x, int y, Color color, boolean highlight) { drawUnbatched(() -> { if (highlight) { - HudComponent.fill(context, x - 2.0f, y - 1.0f, x + textRenderer.getWidth(text) + 1.0f, y + 8.0f, color); + HudComponent.fill(context, x - 2, y - 1, x + textRenderer.getWidth(text) + 1, y + 8, color); HudComponent.drawText(textRenderer, context, text, x, y, getContrasting(color)); } else { HudComponent.drawText(textRenderer, context, text, x, y, color); @@ -49,8 +49,8 @@ private static Color getContrasting(Color original) { } // that name doe - public static void drawHighlightedMiddleAlignedText(TextRenderer textRenderer, DrawContext context, Text text, float x, float y, Color color, boolean highlight) { - drawHighlightedText(textRenderer, context, text, x - textRenderer.getWidth(text) * 0.5f, y, color, highlight); + public static void drawHighlightedMiddleAlignedText(TextRenderer textRenderer, DrawContext context, Text text, int x, int y, Color color, boolean highlight) { + drawHighlightedText(textRenderer, context, text, x - textRenderer.getWidth(text) / 2, y, color, highlight); } public static void drawUnbatched(Runnable draw) { @@ -63,35 +63,36 @@ public static void drawUnbatched(Runnable draw) { } } - public static void drawHorizontalLine(DrawContext context, float x1, float x2, float y, Color color) { - context.drawHorizontalLine(Math.round(x1), Math.round(x2), Math.round(y), color.getRGB()); + public static void drawHorizontalLine(DrawContext context, int x1, int x2, int y, Color color) { + context.drawHorizontalLine(x1, x2, y, color.getRGB()); } - public static void drawVerticalLine(DrawContext context, float x, float y1, float y2, Color color) { - context.drawVerticalLine(Math.round(x), Math.round(y1), Math.round(y2), color.getRGB()); + public static void drawVerticalLine(DrawContext context, int x, int y1, int y2, Color color) { + context.drawVerticalLine(x, y1, y2, color.getRGB()); } - public static void drawBorder(DrawContext context, float x, float y, float w, Color color) { - context.drawBorder(Math.round(x), Math.round(y), Math.round(w), 11 /* off-by-one my beloved */, color.getRGB()); + public static void drawBorder(DrawContext context, int x, int y, int w, Color color) { + context.drawBorder(x, y, w, 11, color.getRGB()); } - protected static void drawHorizontalLineDashed(DrawContext context, float x1, float x2, float y, + protected static void drawHorizontalLineDashed(DrawContext context, int x1, int x2, int y, int dashCount, Color color) { - float width = x2 - x1; + int width = x2 - x1; int segmentCount = dashCount * 2 - 1; - float dashSize = width / (float) segmentCount; + int dashSize = width / segmentCount; for (int i = 0; i < segmentCount; i++) { if (i % 2 != 0) { continue; } - float dx1 = i * dashSize + x1; - float dx2; + int dx1 = i * dashSize + x1; + + int dx2; if (i == segmentCount - 1) { dx2 = x2; } else { dx2 = ((i + 1) * dashSize) + x1; } - context.drawHorizontalLine(Math.round(dx1), Math.round(dx2), Math.round(y), color.getRGB()); + context.drawHorizontalLine(dx1, dx2, y, color.getRGB()); } } diff --git a/src/main/java/ru/octol1ttle/flightassistant/alerts/AbstractAlert.java b/src/main/java/ru/octol1ttle/flightassistant/alerts/AbstractAlert.java index 248da3ae..0c80e2d5 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/alerts/AbstractAlert.java +++ b/src/main/java/ru/octol1ttle/flightassistant/alerts/AbstractAlert.java @@ -17,11 +17,11 @@ public abstract class AbstractAlert { @NotNull public abstract AlertSoundData getAlertSoundData(); - public boolean renderCentered(TextRenderer textRenderer, DrawContext context, float width, float y, boolean highlight) { + public boolean renderCentered(TextRenderer textRenderer, DrawContext context, int width, int y, boolean highlight) { return false; } - public int renderECAM(TextRenderer textRenderer, DrawContext context, float x, float y, boolean highlight) { + public int renderECAM(TextRenderer textRenderer, DrawContext context, int x, int y, boolean highlight) { return 0; } } diff --git a/src/main/java/ru/octol1ttle/flightassistant/alerts/autoflight/AutoFireworkOffAlert.java b/src/main/java/ru/octol1ttle/flightassistant/alerts/autoflight/AutoFireworkOffAlert.java index a857c5ef..10be1a57 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/alerts/autoflight/AutoFireworkOffAlert.java +++ b/src/main/java/ru/octol1ttle/flightassistant/alerts/autoflight/AutoFireworkOffAlert.java @@ -28,7 +28,7 @@ public boolean isTriggered() { } @Override - public int renderECAM(TextRenderer textRenderer, DrawContext context, float x, float y, boolean highlight) { + public int renderECAM(TextRenderer textRenderer, DrawContext context, int x, int y, boolean highlight) { return HudComponent.drawHighlightedText(textRenderer, context, Text.translatable("alerts.flightassistant.autoflight.auto_firework_off"), x, y, FAConfig.hud().cautionColor, highlight && autoflight.afrwkDisconnectionForced); diff --git a/src/main/java/ru/octol1ttle/flightassistant/alerts/autoflight/AutopilotOffAlert.java b/src/main/java/ru/octol1ttle/flightassistant/alerts/autoflight/AutopilotOffAlert.java index 27e86e1b..745fcb6a 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/alerts/autoflight/AutopilotOffAlert.java +++ b/src/main/java/ru/octol1ttle/flightassistant/alerts/autoflight/AutopilotOffAlert.java @@ -28,7 +28,7 @@ public boolean isTriggered() { } @Override - public int renderECAM(TextRenderer textRenderer, DrawContext context, float x, float y, boolean highlight) { + public int renderECAM(TextRenderer textRenderer, DrawContext context, int x, int y, boolean highlight) { return HudComponent.drawHighlightedText(textRenderer, context, Text.translatable("alerts.flightassistant.autoflight.autopilot_off"), x, y, FAConfig.hud().warningColor, highlight && autoflight.apDisconnectionForced); diff --git a/src/main/java/ru/octol1ttle/flightassistant/alerts/fault/ComputerFaultAlert.java b/src/main/java/ru/octol1ttle/flightassistant/alerts/fault/ComputerFaultAlert.java index 15b7d22e..3c6f014d 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/alerts/fault/ComputerFaultAlert.java +++ b/src/main/java/ru/octol1ttle/flightassistant/alerts/fault/ComputerFaultAlert.java @@ -29,7 +29,7 @@ public boolean isTriggered() { } @Override - public int renderECAM(TextRenderer textRenderer, DrawContext context, float x, float y, boolean highlight) { + public int renderECAM(TextRenderer textRenderer, DrawContext context, int x, int y, boolean highlight) { int i = 0; for (IComputer computer : host.faulted) { i += HudComponent.drawHighlightedText(textRenderer, context, Text.translatable("alerts.flightassistant.fault.computers." + computer.getId()), x, y, diff --git a/src/main/java/ru/octol1ttle/flightassistant/alerts/fault/IndicatorFaultAlert.java b/src/main/java/ru/octol1ttle/flightassistant/alerts/fault/IndicatorFaultAlert.java index 43846ea0..f76bd674 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/alerts/fault/IndicatorFaultAlert.java +++ b/src/main/java/ru/octol1ttle/flightassistant/alerts/fault/IndicatorFaultAlert.java @@ -31,7 +31,7 @@ public boolean isTriggered() { } @Override - public int renderECAM(TextRenderer textRenderer, DrawContext context, float x, float y, boolean highlight) { + public int renderECAM(TextRenderer textRenderer, DrawContext context, int x, int y, boolean highlight) { int i = 0; for (HudComponent component : renderer.faulted) { i += HudComponent.drawText(textRenderer, context, Text.translatable("alerts.flightassistant.fault.indicators." + component.getId()), x, y, diff --git a/src/main/java/ru/octol1ttle/flightassistant/alerts/firework/FireworkNoResponseAlert.java b/src/main/java/ru/octol1ttle/flightassistant/alerts/firework/FireworkNoResponseAlert.java index 46a75026..1d6ead47 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/alerts/firework/FireworkNoResponseAlert.java +++ b/src/main/java/ru/octol1ttle/flightassistant/alerts/firework/FireworkNoResponseAlert.java @@ -31,7 +31,7 @@ public boolean isTriggered() { } @Override - public int renderECAM(TextRenderer textRenderer, DrawContext context, float x, float y, boolean highlight) { + public int renderECAM(TextRenderer textRenderer, DrawContext context, int x, int y, boolean highlight) { return HudComponent.drawHighlightedText(textRenderer, context, Text.translatable("alerts.flightassistant.firework.no_response"), x, y, FAConfig.hud().warningColor, highlight); } diff --git a/src/main/java/ru/octol1ttle/flightassistant/alerts/firework/FireworkUnsafeAlert.java b/src/main/java/ru/octol1ttle/flightassistant/alerts/firework/FireworkUnsafeAlert.java index f9e7a653..e781af04 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/alerts/firework/FireworkUnsafeAlert.java +++ b/src/main/java/ru/octol1ttle/flightassistant/alerts/firework/FireworkUnsafeAlert.java @@ -33,7 +33,7 @@ public boolean isTriggered() { } @Override - public int renderECAM(TextRenderer textRenderer, DrawContext context, float x, float y, boolean highlight) { + public int renderECAM(TextRenderer textRenderer, DrawContext context, int x, int y, boolean highlight) { return HudComponent.drawHighlightedText(textRenderer, context, Text.translatable("alerts.flightassistant.firework.unsafe"), x, y, FAConfig.hud().warningColor, highlight && data.isFlying); } diff --git a/src/main/java/ru/octol1ttle/flightassistant/alerts/nav/ApproachingVoidDamageLevelAlert.java b/src/main/java/ru/octol1ttle/flightassistant/alerts/nav/ApproachingVoidDamageLevelAlert.java index 9b8f8360..36298c1c 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/alerts/nav/ApproachingVoidDamageLevelAlert.java +++ b/src/main/java/ru/octol1ttle/flightassistant/alerts/nav/ApproachingVoidDamageLevelAlert.java @@ -29,7 +29,7 @@ public boolean isTriggered() { } @Override - public int renderECAM(TextRenderer textRenderer, DrawContext context, float x, float y, boolean highlight) { + public int renderECAM(TextRenderer textRenderer, DrawContext context, int x, int y, boolean highlight) { Text text = voidLevel.status == VoidLevelComputer.VoidLevelStatus.REACHED_DAMAGE_LEVEL ? Text.translatable("alerts.flightassistant.reached_void_damage_level") : Text.translatable("alerts.flightassistant.approaching_void_damage_level"); diff --git a/src/main/java/ru/octol1ttle/flightassistant/alerts/nav/gpws/ExcessiveDescentAlert.java b/src/main/java/ru/octol1ttle/flightassistant/alerts/nav/gpws/ExcessiveDescentAlert.java index cdf628a8..7b990075 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/alerts/nav/gpws/ExcessiveDescentAlert.java +++ b/src/main/java/ru/octol1ttle/flightassistant/alerts/nav/gpws/ExcessiveDescentAlert.java @@ -30,7 +30,7 @@ public boolean isTriggered() { } @Override - public boolean renderCentered(TextRenderer textRenderer, DrawContext context, float x, float y, boolean highlight) { + public boolean renderCentered(TextRenderer textRenderer, DrawContext context, int x, int y, boolean highlight) { if (gpws.descentImpactTime <= PULL_UP_THRESHOLD) { HudComponent.drawHighlightedMiddleAlignedText(textRenderer, context, Text.translatable("alerts.flightassistant.pull_up"), x, y, FAConfig.hud().warningColor, highlight); diff --git a/src/main/java/ru/octol1ttle/flightassistant/alerts/nav/gpws/ExcessiveTerrainClosureAlert.java b/src/main/java/ru/octol1ttle/flightassistant/alerts/nav/gpws/ExcessiveTerrainClosureAlert.java index fb55de3a..5d4a4884 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/alerts/nav/gpws/ExcessiveTerrainClosureAlert.java +++ b/src/main/java/ru/octol1ttle/flightassistant/alerts/nav/gpws/ExcessiveTerrainClosureAlert.java @@ -53,7 +53,7 @@ public boolean isTriggered() { } @Override - public boolean renderCentered(TextRenderer textRenderer, DrawContext context, float x, float y, boolean highlight) { + public boolean renderCentered(TextRenderer textRenderer, DrawContext context, int x, int y, boolean highlight) { if (gpws.terrainImpactTime <= PULL_UP_THRESHOLD) { HudComponent.drawHighlightedMiddleAlignedText(textRenderer, context, Text.translatable("alerts.flightassistant.pull_up"), x, y, FAConfig.hud().warningColor, highlight); diff --git a/src/main/java/ru/octol1ttle/flightassistant/alerts/other/ElytraHealthLowAlert.java b/src/main/java/ru/octol1ttle/flightassistant/alerts/other/ElytraHealthLowAlert.java index fae2eb33..f5ca766d 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/alerts/other/ElytraHealthLowAlert.java +++ b/src/main/java/ru/octol1ttle/flightassistant/alerts/other/ElytraHealthLowAlert.java @@ -28,7 +28,7 @@ public boolean isTriggered() { } @Override - public int renderECAM(TextRenderer textRenderer, DrawContext context, float x, float y, boolean highlight) { + public int renderECAM(TextRenderer textRenderer, DrawContext context, int x, int y, boolean highlight) { return HudComponent.drawHighlightedText(textRenderer, context, Text.translatable("alerts.flightassistant.elytra_health_low"), x, y, FAConfig.hud().warningColor, highlight && data.isFlying); } diff --git a/src/main/java/ru/octol1ttle/flightassistant/alerts/other/StallAlert.java b/src/main/java/ru/octol1ttle/flightassistant/alerts/other/StallAlert.java index 856bdfba..53222f8e 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/alerts/other/StallAlert.java +++ b/src/main/java/ru/octol1ttle/flightassistant/alerts/other/StallAlert.java @@ -30,7 +30,7 @@ public boolean isTriggered() { } @Override - public boolean renderCentered(TextRenderer textRenderer, DrawContext context, float x, float y, boolean highlight) { + public boolean renderCentered(TextRenderer textRenderer, DrawContext context, int x, int y, boolean highlight) { HudComponent.drawHighlightedMiddleAlignedText(textRenderer, context, Text.translatable("alerts.flightassistant.stall"), x, y, FAConfig.hud().warningColor, highlight); return true; diff --git a/src/main/java/ru/octol1ttle/flightassistant/indicators/AlertIndicator.java b/src/main/java/ru/octol1ttle/flightassistant/indicators/AlertIndicator.java index c4fda1dd..2f866332 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/indicators/AlertIndicator.java +++ b/src/main/java/ru/octol1ttle/flightassistant/indicators/AlertIndicator.java @@ -34,8 +34,8 @@ public void render(DrawContext context, TextRenderer textRenderer) { return; } boolean renderedCentered = false; - float x = dim.lFrame + 5; - float y = dim.tFrame + 15; + int x = dim.lFrame + 5; + int y = dim.tFrame + 15; for (AbstractAlert alert : alert.activeAlerts) { if (!renderedCentered) { diff --git a/src/main/java/ru/octol1ttle/flightassistant/indicators/AltitudeIndicator.java b/src/main/java/ru/octol1ttle/flightassistant/indicators/AltitudeIndicator.java index 6cec249b..59bc96f5 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/indicators/AltitudeIndicator.java +++ b/src/main/java/ru/octol1ttle/flightassistant/indicators/AltitudeIndicator.java @@ -24,36 +24,36 @@ public AltitudeIndicator(Dimensions dim, AirDataComputer data, AutoFlightCompute @Override public void render(DrawContext context, TextRenderer textRenderer) { - float top = dim.tFrame; - float bottom = dim.bFrame; + int top = dim.tFrame; + int bottom = dim.bFrame; - float right = dim.rFrame + 2; - float left = dim.rFrame; + int right = dim.rFrame + 2; + int left = dim.rFrame; - float blocksPerPixel = 1; + int blocksPerPixel = 1; - float floorOffset = Math.round(data.altitude * blocksPerPixel); - float yFloor = dim.yMid - floorOffset; - float xAltText = right + 5; + int floorOffset = Math.round(data.altitude * blocksPerPixel); + int yFloor = dim.yMid - floorOffset; + int xAltText = right + 5; int safeLevel = data.groundLevel == data.voidLevel ? data.voidLevel + 16 : data.groundLevel; if (FAConfig.hud().showAltitudeReadout) { Color color = getAltitudeColor(safeLevel, data.altitude); drawText(textRenderer, context, asText("%.0f", data.altitude), xAltText, dim.yMid - 3, color); - drawBorder(context, xAltText - 2, dim.yMid - 5.0f, 28, color); + drawBorder(context, xAltText - 2, dim.yMid - 5, 28, color); } if (FAConfig.hud().showGroundAltitude) { Color color = data.altitude < safeLevel ? FAConfig.hud().warningColor : FAConfig.hud().frameColor; drawText(textRenderer, context, Text.translatable(data.groundLevel == data.voidLevel ? "flightassistant.void_level" : "flightassistant.ground_level"), xAltText - 10, bottom, color); drawText(textRenderer, context, asText("%d", MathHelper.floor(data.heightAboveGround)), xAltText, bottom, color); - drawBorder(context, xAltText - 2, bottom - 2.0f, 28, color); + drawBorder(context, xAltText - 2, bottom - 2, 28, color); } if (FAConfig.hud().showAltitudeScale) { for (int i = -150; i < 1000; i++) { - float y = (dim.hScreen - i * blocksPerPixel) - yFloor; + int y = (dim.hScreen - i * blocksPerPixel) - yFloor; if (y > (bottom - 5) || i < data.groundLevel) { continue; } diff --git a/src/main/java/ru/octol1ttle/flightassistant/indicators/ElytraHealthIndicator.java b/src/main/java/ru/octol1ttle/flightassistant/indicators/ElytraHealthIndicator.java index 7f7bf776..97302086 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/indicators/ElytraHealthIndicator.java +++ b/src/main/java/ru/octol1ttle/flightassistant/indicators/ElytraHealthIndicator.java @@ -22,8 +22,8 @@ public ElytraHealthIndicator(Dimensions dim, AirDataComputer data) { @Override public void render(DrawContext context, TextRenderer textRenderer) { - float x = dim.xMid; - float y = dim.bFrame; + int x = dim.xMid; + int y = dim.bFrame; if (FAConfig.hud().showElytraHealth && data.elytraHealth != null) { Color color; @@ -32,7 +32,7 @@ public void render(DrawContext context, TextRenderer textRenderer) { } else { color = data.elytraHealth <= 10.0f ? FAConfig.hud().cautionColor : FAConfig.hud().frameColor; } - drawBorder(context, x - 3.5f, y - 2.0f, 30, color); + drawBorder(context, x - 3, y - 2, 30, color); drawText(textRenderer, context, Text.translatable("flightassistant.elytra_short"), x - 10, y, color); drawText(textRenderer, context, asText("%d", MathHelper.ceil(data.elytraHealth)).append("%"), x, y, color); diff --git a/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightDirectorsIndicator.java b/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightDirectorsIndicator.java index 0ec1b879..e1503057 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightDirectorsIndicator.java +++ b/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightDirectorsIndicator.java @@ -29,8 +29,8 @@ public void render(DrawContext context, TextRenderer textRenderer) { if (autoflight.getTargetPitch() != null) { float deltaPitch = autoflight.getTargetPitch() - data.pitch; - float fdY = MathHelper.clamp(dim.yMid - Math.round(deltaPitch * dim.degreesPerPixel), dim.tFrame - 10, dim.bFrame + 10); - drawHorizontalLine(context, dim.xMid - dim.wFrame * 0.1f, dim.xMid + dim.wFrame * 0.1f, fdY, FAConfig.hud().advisoryColor); + int fdY = MathHelper.clamp(MathHelper.floor(dim.yMid - deltaPitch * dim.degreesPerPixel), dim.tFrame - 10, dim.bFrame + 10); + drawHorizontalLine(context, dim.xMid - dim.wFrame / 10, dim.xMid + dim.wFrame / 10, fdY, FAConfig.hud().advisoryColor); } if (autoflight.getTargetHeading() != null) { @@ -42,8 +42,8 @@ public void render(DrawContext context, TextRenderer textRenderer) { deltaHeading -= 360.0f; } - float fdX = MathHelper.clamp(dim.xMid + Math.round(deltaHeading * dim.degreesPerPixel), dim.lFrame + 10, dim.rFrame - 10); - drawVerticalLine(context, fdX, dim.yMid - dim.hFrame * 0.15f, dim.yMid + dim.hFrame * 0.15f, FAConfig.hud().advisoryColor); + int fdX = MathHelper.clamp(MathHelper.floor(dim.xMid + deltaHeading * dim.degreesPerPixel), dim.lFrame + 10, dim.rFrame - 10); + drawVerticalLine(context, fdX, dim.yMid - dim.hFrame / 7, dim.yMid + dim.hFrame / 7, FAConfig.hud().advisoryColor); } } diff --git a/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightMode.java b/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightMode.java index 7dcff643..39b8e72b 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightMode.java +++ b/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightMode.java @@ -35,7 +35,7 @@ public void update(Text newText, boolean forceFlash) { lastText = newText; } - public void render(DrawContext context, TextRenderer textRenderer, float x, float y) { + public void render(DrawContext context, TextRenderer textRenderer, int x, int y) { if (lastUpdateTime == null) { throw new IllegalStateException("Called render before updating"); } diff --git a/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightModeIndicator.java b/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightModeIndicator.java index 0d61b8b7..8cd82a5c 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightModeIndicator.java +++ b/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightModeIndicator.java @@ -4,6 +4,7 @@ import net.minecraft.client.gui.DrawContext; import net.minecraft.text.MutableText; import net.minecraft.text.Text; +import net.minecraft.util.math.MathHelper; import org.joml.Vector2d; import ru.octol1ttle.flightassistant.Dimensions; import ru.octol1ttle.flightassistant.HudComponent; @@ -94,8 +95,8 @@ private void renderFireworkMode(DrawContext context, TextRenderer textRenderer) } } - float x = dim.lFrame + dim.wFrame * (1 / 5.0f); - float y = dim.bFrame - 10; + int x = MathHelper.floor(dim.lFrame + dim.wFrame * (1 / 5.0f)); + int y = dim.bFrame - 10; fireworkMode.render(context, textRenderer, x, y); } @@ -118,8 +119,8 @@ private void renderVerticalMode(DrawContext context, TextRenderer textRenderer) verticalMode.update(Text.translatable("mode.flightassistant.vert.descend" + type, targetAltitude)); } - float x = dim.lFrame + dim.wFrame * (2 / 5.0f); - float y = dim.bFrame - 10; + int x = MathHelper.floor(dim.lFrame + dim.wFrame * (2 / 5.0f)); + int y = dim.bFrame - 10; verticalMode.render(context, textRenderer, x, y); } @@ -135,8 +136,8 @@ private void renderLateralMode(DrawContext context, TextRenderer textRenderer) { lateralMode.update(Text.translatable("mode.flightassistant.lat.position", target.x, target.y)); } - float x = dim.lFrame + dim.wFrame * (3 / 5.0f); - float y = dim.bFrame - 10; + int x = MathHelper.floor(dim.lFrame + dim.wFrame * (3 / 5.0f)); + int y = dim.bFrame - 10; lateralMode.render(context, textRenderer, x, y); } @@ -157,8 +158,8 @@ private void renderAutomationStatus(DrawContext context, TextRenderer textRender automationMode.update(automationStatus); - float x = dim.lFrame + dim.wFrame * (4 / 5.0f); - float y = dim.bFrame - 10; + int x = MathHelper.floor(dim.lFrame + dim.wFrame * (4 / 5.0f)); + int y = dim.bFrame - 10; automationMode.render(context, textRenderer, x, y); } @@ -171,7 +172,7 @@ private void appendWithSeparation(MutableText text, Text append) { @Override public void renderFaulted(DrawContext context, TextRenderer textRenderer) { - drawText(textRenderer, context, Text.translatable("flightassistant.flight_mode_short"), dim.lFrame + dim.wFrame * 0.2f, dim.bFrame - 10, FAConfig.hud().warningColor); + drawText(textRenderer, context, Text.translatable("flightassistant.flight_mode_short"), dim.lFrame + dim.wFrame / 5, dim.bFrame - 10, FAConfig.hud().warningColor); } @Override diff --git a/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightPathIndicator.java b/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightPathIndicator.java index 491d5b76..0f0558e5 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightPathIndicator.java +++ b/src/main/java/ru/octol1ttle/flightassistant/indicators/FlightPathIndicator.java @@ -4,6 +4,7 @@ import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; +import net.minecraft.util.math.MathHelper; import ru.octol1ttle.flightassistant.Dimensions; import ru.octol1ttle.flightassistant.HudComponent; import ru.octol1ttle.flightassistant.computers.AirDataComputer; @@ -34,20 +35,20 @@ public void render(DrawContext context, TextRenderer textRenderer) { deltaHeading += 360; } - float y = dim.yMid; - float x = dim.xMid; + int y = dim.yMid; + int x = dim.xMid; - y += Math.round(deltaPitch * dim.degreesPerPixel); - x += Math.round(deltaHeading * dim.degreesPerPixel); + y += MathHelper.floor(deltaPitch * dim.degreesPerPixel); + x += MathHelper.floor(deltaHeading * dim.degreesPerPixel); if (y < dim.tFrame || y > dim.bFrame || x < dim.lFrame || x > dim.rFrame) { return; } - float l = x - 3; - float r = x + 3; - float t = y - 3; - float b = y + 3; + int l = x - 3; + int r = x + 3; + int t = y - 3; + int b = y + 3; Color color = gpws.getGPWSLampColor(); drawVerticalLine(context, l, t, b, color); diff --git a/src/main/java/ru/octol1ttle/flightassistant/indicators/HeadingIndicator.java b/src/main/java/ru/octol1ttle/flightassistant/indicators/HeadingIndicator.java index b42d3b8a..8b31c4b5 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/indicators/HeadingIndicator.java +++ b/src/main/java/ru/octol1ttle/flightassistant/indicators/HeadingIndicator.java @@ -4,6 +4,7 @@ import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; +import net.minecraft.util.math.MathHelper; import ru.octol1ttle.flightassistant.Dimensions; import ru.octol1ttle.flightassistant.HudComponent; import ru.octol1ttle.flightassistant.computers.AirDataComputer; @@ -24,25 +25,25 @@ public HeadingIndicator(Dimensions dim, AirDataComputer data, AutoFlightComputer @Override public void render(DrawContext context, TextRenderer textRenderer) { - float left = dim.lFrame; - float right = dim.rFrame; - float top = dim.tFrame - 10; + int left = dim.lFrame; + int right = dim.rFrame; + int top = dim.tFrame - 10; - float yText = top - 7; - float northOffset = data.heading * dim.degreesPerPixel; - float xNorth = dim.xMid - northOffset; + int yText = top - 7; + int northOffset = MathHelper.floor(data.heading * dim.degreesPerPixel); + int xNorth = dim.xMid - northOffset; if (FAConfig.hud().showHeadingReadout) { Color color = getHeadingColor(data.heading); drawText(textRenderer, context, asText("%03d", Math.round(data.heading)), dim.xMid - 8, yText, color); - drawBorder(context, dim.xMid - 15, yText - 2.0f, 30, color); + drawBorder(context, dim.xMid - 15, yText - 2, 30, color); } if (FAConfig.hud().showHeadingScale) { drawMiddleAlignedText(textRenderer, context, asText("^"), dim.xMid, top + 10, FAConfig.hud().frameColor); for (int i = -540; i < 540; i++) { - float x = (i * dim.degreesPerPixel) + xNorth; + int x = (i * dim.degreesPerPixel) + xNorth; if (x < left) { continue; } diff --git a/src/main/java/ru/octol1ttle/flightassistant/indicators/LocationIndicator.java b/src/main/java/ru/octol1ttle/flightassistant/indicators/LocationIndicator.java index f8fe293f..1546bfa5 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/indicators/LocationIndicator.java +++ b/src/main/java/ru/octol1ttle/flightassistant/indicators/LocationIndicator.java @@ -3,6 +3,7 @@ import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; +import net.minecraft.util.math.MathHelper; import ru.octol1ttle.flightassistant.Dimensions; import ru.octol1ttle.flightassistant.HudComponent; import ru.octol1ttle.flightassistant.computers.AirDataComputer; @@ -24,11 +25,11 @@ public void render(DrawContext context, TextRenderer textRenderer) { return; } - float x = dim.lFrame + 15; - float y = dim.bFrame; + int x = dim.lFrame + 15; + int y = dim.bFrame; - long xLoc = Math.round(data.position.x); - long zLoc = Math.round(data.position.z); + int xLoc = MathHelper.floor(data.position.x); + int zLoc = MathHelper.floor(data.position.z); drawText(textRenderer, context, asText("%d / %d", xLoc, zLoc), x, y, FAConfig.hud().frameColor); } diff --git a/src/main/java/ru/octol1ttle/flightassistant/indicators/PitchIndicator.java b/src/main/java/ru/octol1ttle/flightassistant/indicators/PitchIndicator.java index 080d24ce..61ac3298 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/indicators/PitchIndicator.java +++ b/src/main/java/ru/octol1ttle/flightassistant/indicators/PitchIndicator.java @@ -4,6 +4,7 @@ import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; +import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.RotationAxis; import ru.octol1ttle.flightassistant.Dimensions; import ru.octol1ttle.flightassistant.HudComponent; @@ -36,11 +37,10 @@ public void render(DrawContext context, TextRenderer textRenderer) { pitchData.update(dim); - float horizonOffset = data.pitch * dim.degreesPerPixel; - float yHorizon = dim.yMid + horizonOffset; + int yHorizon = MathHelper.floor(dim.yMid + data.pitch * dim.degreesPerPixel); - float xMid = dim.xMid; - float yMid = dim.yMid; + int xMid = dim.xMid; + int yMid = dim.yMid; context.getMatrices().push(); context.getMatrices().translate(xMid, yMid, 0); @@ -49,10 +49,10 @@ public void render(DrawContext context, TextRenderer textRenderer) { drawLadder(textRenderer, context, yHorizon); - drawReferenceMark(context, yHorizon, stall.maximumSafePitch, FAConfig.hud().warningColor); - drawReferenceMark(context, yHorizon, PitchController.CLIMB_PITCH, getPitchColor(PitchController.CLIMB_PITCH)); - drawReferenceMark(context, yHorizon, PitchController.GLIDE_PITCH, getPitchColor(PitchController.GLIDE_PITCH)); - drawReferenceMark(context, yHorizon, voidLevel.minimumSafePitch, FAConfig.hud().warningColor); + drawReferenceMark(context, stall.maximumSafePitch, yHorizon, FAConfig.hud().warningColor); + drawReferenceMark(context, PitchController.CLIMB_PITCH, yHorizon, getPitchColor(PitchController.CLIMB_PITCH)); + drawReferenceMark(context, PitchController.GLIDE_PITCH, yHorizon, getPitchColor(PitchController.GLIDE_PITCH)); + drawReferenceMark(context, voidLevel.minimumSafePitch, yHorizon, FAConfig.hud().warningColor); pitchData.l1 -= pitchData.margin; pitchData.r2 += pitchData.margin; @@ -76,34 +76,34 @@ public String getId() { return "pitch"; } - private void drawLadder(TextRenderer textRenderer, DrawContext context, float yHorizon) { + private void drawLadder(TextRenderer textRenderer, DrawContext context, int yHorizon) { for (int i = DEGREES_PER_BAR; i <= 90; i += DEGREES_PER_BAR) { - float offset = dim.degreesPerPixel * i; + int offset = dim.degreesPerPixel * i; drawDegreeBar(textRenderer, context, -i, yHorizon + offset); drawDegreeBar(textRenderer, context, i, yHorizon - offset); } } - private void drawReferenceMark(DrawContext context, float yHorizon, float degrees, Color color) { + private void drawReferenceMark(DrawContext context, float degrees, int yHorizon, Color color) { if (degrees == 0) { return; } - float y = (-degrees * dim.degreesPerPixel) + yHorizon; + int y = MathHelper.floor((-degrees * dim.degreesPerPixel) + yHorizon); if (y < dim.tFrame || y > dim.bFrame) { return; } - float width = (pitchData.l2 - pitchData.l1) * 0.45f; - float l1 = pitchData.l2 - width; - float r2 = pitchData.r1 + width; + int width = (pitchData.l2 - pitchData.l1) / 2; + int l1 = pitchData.l2 - width; + int r2 = pitchData.r1 + width; drawHorizontalLineDashed(context, l1, pitchData.l2, y, 3, color); drawHorizontalLineDashed(context, pitchData.r1, r2, y, 3, color); } - private void drawDegreeBar(TextRenderer textRenderer, DrawContext context, float degree, float y) { + private void drawDegreeBar(TextRenderer textRenderer, DrawContext context, float degree, int y) { if (y < dim.tFrame || y > dim.bFrame) { return; } @@ -128,19 +128,19 @@ private void drawDegreeBar(TextRenderer textRenderer, DrawContext context, float } private static class PitchIndicatorData { - public float width; - public float margin; - public float sideWidth; - public float l1; - public float l2; - public float r1; - public float r2; + public int width; + public int margin; + public int sideWidth; + public int l1; + public int l2; + public int r1; + public int r2; public void update(Dimensions dim) { - width = dim.wFrame * 0.5f; - float left = dim.lFrame + (width * 0.5f); + width = dim.wFrame / 2; + int left = dim.lFrame + (width / 2); - margin = Math.round(width * 0.3d); + margin = width / 3; l1 = left + margin; l2 = dim.xMid - 7; sideWidth = l2 - l1; diff --git a/src/main/java/ru/octol1ttle/flightassistant/indicators/SpeedIndicator.java b/src/main/java/ru/octol1ttle/flightassistant/indicators/SpeedIndicator.java index ce13f858..bcea6a2e 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/indicators/SpeedIndicator.java +++ b/src/main/java/ru/octol1ttle/flightassistant/indicators/SpeedIndicator.java @@ -3,6 +3,7 @@ import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; +import net.minecraft.util.math.MathHelper; import ru.octol1ttle.flightassistant.Dimensions; import ru.octol1ttle.flightassistant.HudComponent; import ru.octol1ttle.flightassistant.computers.AirDataComputer; @@ -19,34 +20,36 @@ public SpeedIndicator(Dimensions dim, AirDataComputer data) { @Override public void render(DrawContext context, TextRenderer textRenderer) { - float top = dim.tFrame; - float bottom = dim.bFrame; + int top = dim.tFrame; + int bottom = dim.bFrame; - float left = dim.lFrame - 2; - float right = dim.lFrame; - float unitPerPixel = 30; + int left = dim.lFrame - 2; + int right = dim.lFrame; + int unitPerPixel = 30; - float floorOffset = data.speed * unitPerPixel; - float yFloor = dim.yMid - floorOffset; + int floorOffset = MathHelper.floor(data.speed * unitPerPixel); + int yFloor = dim.yMid - floorOffset; - float xSpeedText = left - 5; + int xSpeedText = left - 5; if (FAConfig.hud().showSpeedReadout) { drawRightAlignedText(textRenderer, context, asText("%.2f", data.speed), xSpeedText, dim.yMid - 3, FAConfig.hud().frameColor); - drawBorder(context, xSpeedText - 29.5f, dim.yMid - 5.0f, 30, FAConfig.hud().frameColor); + drawBorder(context, xSpeedText - 28, dim.yMid - 5, 30, FAConfig.hud().frameColor); - float frameWidth = dim.rFrame - dim.lFrame; + int frameWidth = dim.rFrame - dim.lFrame; if (FAConfig.hud().showGroundSpeedReadout) { - drawText(textRenderer, context, Text.translatable("flightassistant.ground_speed_short", String.format("%.2f", data.velocityPerSecond.horizontalLength())), dim.lFrame + frameWidth * 0.25f, dim.bFrame, FAConfig.hud().frameColor); + int x = MathHelper.floor(dim.lFrame + frameWidth * 0.25f); + drawText(textRenderer, context, Text.translatable("flightassistant.ground_speed_short", String.format("%.2f", data.velocityPerSecond.horizontalLength())), x, dim.bFrame, FAConfig.hud().frameColor); } if (FAConfig.hud().showVerticalSpeedReadout) { - drawText(textRenderer, context, Text.translatable("flightassistant.vertical_speed_short", String.format("%.2f", data.velocityPerSecond.y)), dim.lFrame + frameWidth * 0.75f - 7, dim.bFrame, data.velocityPerSecond.y <= -10.0f ? FAConfig.hud().warningColor : FAConfig.hud().frameColor); + int x = MathHelper.floor(dim.lFrame + frameWidth * 0.75f - 7); + drawText(textRenderer, context, Text.translatable("flightassistant.vertical_speed_short", String.format("%.2f", data.velocityPerSecond.y)), x, dim.bFrame, data.velocityPerSecond.y <= -10.0f ? FAConfig.hud().warningColor : FAConfig.hud().frameColor); } } if (FAConfig.hud().showSpeedScale) { for (float i = 0; i <= 100; i += 0.25f) { - float y = dim.hScreen - i * unitPerPixel - yFloor; + int y = MathHelper.floor(dim.hScreen - i * unitPerPixel - yFloor); if (y < top || y > (bottom - 5)) continue; diff --git a/src/main/java/ru/octol1ttle/flightassistant/indicators/StatusIndicator.java b/src/main/java/ru/octol1ttle/flightassistant/indicators/StatusIndicator.java index 44417b91..87e5c182 100644 --- a/src/main/java/ru/octol1ttle/flightassistant/indicators/StatusIndicator.java +++ b/src/main/java/ru/octol1ttle/flightassistant/indicators/StatusIndicator.java @@ -20,8 +20,8 @@ public StatusIndicator(Dimensions dim, FireworkController firework) { @Override public void render(DrawContext context, TextRenderer textRenderer) { - float x = dim.rFrame - 5; - float y = dim.tFrame + 5; + int x = dim.rFrame - 5; + int y = dim.tFrame + 5; if (FAConfig.hud().showFireworkCount) { Color fireworkColor = FAConfig.hud().statusColor; @@ -34,7 +34,7 @@ public void render(DrawContext context, TextRenderer textRenderer) { } drawRightAlignedText(textRenderer, context, Text.translatable("status.flightassistant.firework_count", firework.safeFireworkCount), - x, y += 10, fireworkColor); + x, y + 10, fireworkColor); } }