aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/isxander/yacl/gui/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/dev/isxander/yacl/gui/controllers')
-rw-r--r--src/main/java/dev/isxander/yacl/gui/controllers/BooleanController.java2
-rw-r--r--src/main/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java15
-rw-r--r--src/main/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java8
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);
}