diff options
Diffstat (limited to 'src/main/java/dev/isxander/yacl/gui/controllers')
3 files changed, 19 insertions, 6 deletions
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<Boolean> { * @param option bound option */ public BooleanController(Option<Boolean> 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<T extends Controller<?>> extends Abstract protected final T control; protected final List<OrderedText> wrappedTooltip; - public Dimension<Integer> dim; + protected Dimension<Integer> dim; protected final Screen screen; protected boolean hovered = false; protected float hoveredTicks = 0; + private int prevMouseX, prevMouseY; + public ControllerWidget(T control, Screen screen, Dimension<Integer> dim) { this.control = control; this.dim = dim; @@ -32,7 +34,7 @@ public abstract class ControllerWidget<T extends Controller<?>> 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<T extends Controller<?>> 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<T extends Controller<?>> extends Abstract return dim.y() + dim.height() / 2f - textRenderer.fontHeight / 2f; } + public void setDimension(Dimension<Integer> 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<ISliderController< public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { super.render(matrices, mouseX, mouseY, delta); - if (sliderBounds == null) - sliderBounds = Dimension.ofInt(dim.xLimit() - getXPadding() - getThumbWidth() / 2 - dim.width() / 3, dim.centerY() - 4, dim.width() / 3, 8); calculateInterpolation(); } @@ -111,6 +109,12 @@ public class SliderControllerElement extends ControllerWidget<ISliderController< interpolation = (float) ((control.pendingValue() - control.min()) * 1 / control.range()); } + @Override + public void setDimension(Dimension<Integer> 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); } |