diff options
author | isXander <isxander@users.noreply.github.com> | 2022-09-19 19:11:13 +0100 |
---|---|---|
committer | isXander <isxander@users.noreply.github.com> | 2022-09-19 19:11:13 +0100 |
commit | de1c8a317226b58fe03497027136eaed1adfd808 (patch) | |
tree | 5f97d6d91bc37f83d8de8c6f4a335d06a014cee0 /src/main/java/dev/isxander/yacl/gui/YACLScreen.java | |
parent | 904e4d61b6cf84c807a99e66fc70527b01ae6fcc (diff) | |
download | YetAnotherConfigLib-de1c8a317226b58fe03497027136eaed1adfd808.tar.gz YetAnotherConfigLib-de1c8a317226b58fe03497027136eaed1adfd808.tar.bz2 YetAnotherConfigLib-de1c8a317226b58fe03497027136eaed1adfd808.zip |
1.4.0
improved tooltips
`ButtonOption` now consumes itself, so you can access it when building.
Diffstat (limited to 'src/main/java/dev/isxander/yacl/gui/YACLScreen.java')
-rw-r--r-- | src/main/java/dev/isxander/yacl/gui/YACLScreen.java | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/src/main/java/dev/isxander/yacl/gui/YACLScreen.java b/src/main/java/dev/isxander/yacl/gui/YACLScreen.java index cef8fec..6b5a2e4 100644 --- a/src/main/java/dev/isxander/yacl/gui/YACLScreen.java +++ b/src/main/java/dev/isxander/yacl/gui/YACLScreen.java @@ -4,21 +4,17 @@ import com.mojang.blaze3d.systems.RenderSystem; import dev.isxander.yacl.api.*; import dev.isxander.yacl.api.utils.Dimension; import dev.isxander.yacl.api.utils.OptionUtils; -import dev.isxander.yacl.impl.YACLConstants; import net.minecraft.client.font.MultilineText; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.tooltip.TooltipComponent; import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.math.Matrix4f; -import java.util.ArrayList; import java.util.HashSet; -import java.util.List; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; @@ -118,7 +114,7 @@ public class YACLScreen extends Screen { for (Element child : children()) { if (child instanceof TooltipButtonWidget tooltipButtonWidget) { - tooltipButtonWidget.renderHoveredTooltip(matrices, mouseX, mouseY); + tooltipButtonWidget.renderHoveredTooltip(matrices); } } } @@ -220,21 +216,24 @@ public class YACLScreen extends Screen { client.setScreen(parent); } - public static void renderMultilineTooltip(MatrixStack matrices, TextRenderer textRenderer, MultilineText text, int x, int y, int screenWidth, int screenHeight) { + public static void renderMultilineTooltip(MatrixStack matrices, TextRenderer textRenderer, MultilineText text, int centerX, int yAbove, int yBelow, int screenWidth, int screenHeight) { if (text.count() > 0) { int maxWidth = text.getMaxWidth(); int lineHeight = textRenderer.fontHeight + 1; int height = text.count() * lineHeight - 1; + int belowY = yBelow + 12; + int aboveY = yAbove - height + 12; + int maxBelow = screenHeight - (belowY + height); + int minAbove = aboveY - height; + int y = belowY; + if (maxBelow < -8) + y = maxBelow > minAbove ? belowY : aboveY; + + int x = centerX - text.getMaxWidth() / 2 - 12; + int drawX = x + 12; int drawY = y - 12; - if (drawX + maxWidth > screenWidth) { - drawX -= 28 + maxWidth; - } - - if (drawY + height + 6 > screenHeight) { - drawY = screenHeight - height - 6; - } matrices.push(); Tessellator tessellator = Tessellator.getInstance(); |