From 627c45bd6cfa7cce9e048d7681029c812a45f1cc Mon Sep 17 00:00:00 2001 From: xander Date: Thu, 1 Sep 2022 14:10:08 +0100 Subject: category tooltips fix slider scrolling --- .../isxander/yacl/gui/controllers/BooleanController.java | 2 +- .../isxander/yacl/gui/controllers/ControllerWidget.java | 15 ++++++++++++--- .../gui/controllers/slider/SliderControllerElement.java | 8 ++++++-- 3 files changed, 19 insertions(+), 6 deletions(-) (limited to 'src/main/java/dev/isxander/yacl/gui/controllers') diff --git a/src/main/java/dev/isxander/yacl/gui/controllers/BooleanController.java b/src/main/java/dev/isxander/yacl/gui/controllers/BooleanController.java index 4a14799..9effd26 100644 --- a/src/main/java/dev/isxander/yacl/gui/controllers/BooleanController.java +++ b/src/main/java/dev/isxander/yacl/gui/controllers/BooleanController.java @@ -42,7 +42,7 @@ public class BooleanController implements Controller { * @param option bound option */ public BooleanController(Option option) { - this(option, ON_OFF_FORMATTER, true); + this(option, ON_OFF_FORMATTER, false); } /** diff --git a/src/main/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java b/src/main/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java index 216c945..fe78b2e 100644 --- a/src/main/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java +++ b/src/main/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java @@ -16,12 +16,14 @@ public abstract class ControllerWidget> extends Abstract protected final T control; protected final List wrappedTooltip; - public Dimension dim; + protected Dimension dim; protected final Screen screen; protected boolean hovered = false; protected float hoveredTicks = 0; + private int prevMouseX, prevMouseY; + public ControllerWidget(T control, Screen screen, Dimension dim) { this.control = control; this.dim = dim; @@ -32,7 +34,7 @@ public abstract class ControllerWidget> extends Abstract @Override public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { hovered = isMouseOver(mouseX, mouseY); - if (hovered) { + if (hovered && mouseX == prevMouseX && mouseY == prevMouseY) { hoveredTicks += delta; } else { hoveredTicks = 0; @@ -62,9 +64,12 @@ public abstract class ControllerWidget> extends Abstract drawHoveredControl(matrices, mouseX, mouseY, delta); } - if (hoveredTicks > 40) { + if (hoveredTicks > 30) { screen.renderOrderedTooltip(matrices, wrappedTooltip, mouseX, mouseY); } + + prevMouseX = mouseX; + prevMouseY = mouseY; } protected void drawHoveredControl(MatrixStack matrices, int mouseX, int mouseY, float delta) { @@ -117,6 +122,10 @@ public abstract class ControllerWidget> extends Abstract return dim.y() + dim.height() / 2f - textRenderer.fontHeight / 2f; } + public void setDimension(Dimension dim) { + this.dim = dim; + } + @Override public SelectionType getType() { return hovered ? SelectionType.HOVERED : SelectionType.NONE; diff --git a/src/main/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java b/src/main/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java index 5c5e20e..a7dec64 100644 --- a/src/main/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java +++ b/src/main/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java @@ -29,8 +29,6 @@ public class SliderControllerElement extends ControllerWidget dim) { + super.setDimension(dim); + sliderBounds = Dimension.ofInt(dim.xLimit() - getXPadding() - getThumbWidth() / 2 - dim.width() / 3, dim.centerY() - 4, dim.width() / 3, 8); + } + private int getThumbX() { return (int) (sliderBounds.x() + sliderBounds.width() * interpolation); } -- cgit