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/ActionController.java2
-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.java26
-rw-r--r--src/main/java/dev/isxander/yacl/gui/controllers/EnumController.java2
-rw-r--r--src/main/java/dev/isxander/yacl/gui/controllers/LabelController.java2
-rw-r--r--src/main/java/dev/isxander/yacl/gui/controllers/TickBoxController.java16
-rw-r--r--src/main/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java10
-rw-r--r--src/main/java/dev/isxander/yacl/gui/controllers/string/StringControllerElement.java2
8 files changed, 39 insertions, 23 deletions
diff --git a/src/main/java/dev/isxander/yacl/gui/controllers/ActionController.java b/src/main/java/dev/isxander/yacl/gui/controllers/ActionController.java
index e337ee3..3550072 100644
--- a/src/main/java/dev/isxander/yacl/gui/controllers/ActionController.java
+++ b/src/main/java/dev/isxander/yacl/gui/controllers/ActionController.java
@@ -80,7 +80,7 @@ public class ActionController implements Controller<Consumer<YACLScreen>> {
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
- if (isMouseOver(mouseX, mouseY)) {
+ if (isMouseOver(mouseX, mouseY) && isAvailable()) {
executeAction();
return true;
}
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 38be6db..bb5304b 100644
--- a/src/main/java/dev/isxander/yacl/gui/controllers/BooleanController.java
+++ b/src/main/java/dev/isxander/yacl/gui/controllers/BooleanController.java
@@ -115,7 +115,7 @@ public class BooleanController implements Controller<Boolean> {
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
- if (!isMouseOver(mouseX, mouseY))
+ if (!isMouseOver(mouseX, mouseY) || !isAvailable())
return false;
toggleSetting();
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 54c426d..1c986e4 100644
--- a/src/main/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java
+++ b/src/main/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java
@@ -5,6 +5,7 @@ import dev.isxander.yacl.api.utils.Dimension;
import dev.isxander.yacl.gui.AbstractWidget;
import dev.isxander.yacl.gui.YACLScreen;
import dev.isxander.yacl.impl.YACLConstants;
+import net.minecraft.client.font.MultilineText;
import net.minecraft.client.gui.DrawableHelper;
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
import net.minecraft.client.util.math.MatrixStack;
@@ -15,7 +16,7 @@ import java.util.List;
public abstract class ControllerWidget<T extends Controller<?>> extends AbstractWidget {
protected final T control;
- protected final List<OrderedText> wrappedTooltip;
+ protected final MultilineText wrappedTooltip;
protected final YACLScreen screen;
protected boolean focused = false;
@@ -28,7 +29,7 @@ public abstract class ControllerWidget<T extends Controller<?>> extends Abstract
super(dim);
this.control = control;
this.screen = screen;
- this.wrappedTooltip = textRenderer.wrapLines(control.option().tooltip(), screen.width / 2);
+ this.wrappedTooltip = MultilineText.create(textRenderer, control.option().tooltip(), screen.width / 2);
}
@Override
@@ -53,10 +54,10 @@ public abstract class ControllerWidget<T extends Controller<?>> extends Abstract
Text shortenedName = Text.literal(nameString).fillStyle(name.getStyle());
- drawButtonRect(matrices, dim.x(), dim.y(), dim.xLimit(), dim.yLimit(), isHovered());
+ drawButtonRect(matrices, dim.x(), dim.y(), dim.xLimit(), dim.yLimit(), isHovered(), isAvailable());
matrices.push();
matrices.translate(dim.x() + getXPadding(), getTextY(), 0);
- textRenderer.drawWithShadow(matrices, shortenedName, 0, 0, -1);
+ textRenderer.drawWithShadow(matrices, shortenedName, 0, 0, getValueColor());
matrices.pop();
drawValueText(matrices, mouseX, mouseY, delta);
@@ -71,7 +72,7 @@ public abstract class ControllerWidget<T extends Controller<?>> extends Abstract
@Override
public void postRender(MatrixStack matrices, int mouseX, int mouseY, float delta) {
if (hoveredTicks > YACLConstants.HOVER_TICKS) {
- screen.renderOrderedTooltip(matrices, wrappedTooltip, mouseX, mouseY);
+ YACLScreen.renderMultilineTooltip(matrices, textRenderer, wrappedTooltip, mouseX, mouseY, screen.width, screen.height);
}
}
@@ -83,7 +84,7 @@ public abstract class ControllerWidget<T extends Controller<?>> extends Abstract
Text valueText = getValueText();
matrices.push();
matrices.translate(dim.xLimit() - textRenderer.getWidth(valueText) - getXPadding(), getTextY(), 0);
- textRenderer.drawWithShadow(matrices, valueText, 0, 0, -1);
+ textRenderer.drawWithShadow(matrices, valueText, 0, 0, getValueColor());
matrices.pop();
}
@@ -98,7 +99,7 @@ public abstract class ControllerWidget<T extends Controller<?>> extends Abstract
}
public boolean isHovered() {
- return hovered || focused;
+ return isAvailable() && (hovered || focused);
}
protected abstract int getHoveredControlWidth();
@@ -119,6 +120,14 @@ public abstract class ControllerWidget<T extends Controller<?>> extends Abstract
return control.formatValue();
}
+ protected boolean isAvailable() {
+ return control.option().available();
+ }
+
+ protected int getValueColor() {
+ return isAvailable() ? -1 : inactiveColor;
+ }
+
protected void drawOutline(MatrixStack matrices, int x1, int y1, int x2, int y2, int width, int color) {
DrawableHelper.fill(matrices, x1, y1, x2, y1 + width, color);
DrawableHelper.fill(matrices, x2, y1, x2 - width, y2, color);
@@ -132,6 +141,9 @@ public abstract class ControllerWidget<T extends Controller<?>> extends Abstract
@Override
public boolean changeFocus(boolean lookForwards) {
+ if (!isAvailable())
+ return false;
+
this.focused = !this.focused;
return this.focused;
}
diff --git a/src/main/java/dev/isxander/yacl/gui/controllers/EnumController.java b/src/main/java/dev/isxander/yacl/gui/controllers/EnumController.java
index 9d8e59c..261c067 100644
--- a/src/main/java/dev/isxander/yacl/gui/controllers/EnumController.java
+++ b/src/main/java/dev/isxander/yacl/gui/controllers/EnumController.java
@@ -98,7 +98,7 @@ public class EnumController<T extends Enum<T>> implements Controller<T> {
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
- if (!isMouseOver(mouseX, mouseY) || (button != 0 && button != 1))
+ if (!isMouseOver(mouseX, mouseY) || (button != 0 && button != 1) || !isAvailable())
return false;
playDownSound();
diff --git a/src/main/java/dev/isxander/yacl/gui/controllers/LabelController.java b/src/main/java/dev/isxander/yacl/gui/controllers/LabelController.java
index 33ca176..57927f5 100644
--- a/src/main/java/dev/isxander/yacl/gui/controllers/LabelController.java
+++ b/src/main/java/dev/isxander/yacl/gui/controllers/LabelController.java
@@ -57,7 +57,7 @@ public class LabelController implements Controller<Text> {
public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) {
updateText();
- wrappedText.drawWithShadow(matrices, dim.x(), dim.y() + getYPadding(), textRenderer.fontHeight, -1);
+ wrappedText.drawWithShadow(matrices, dim.x(), dim.y() + getYPadding(), textRenderer.fontHeight, option().available() ? -1 : 0xFFA0A0A0);
}
private int getYPadding() {
diff --git a/src/main/java/dev/isxander/yacl/gui/controllers/TickBoxController.java b/src/main/java/dev/isxander/yacl/gui/controllers/TickBoxController.java
index df0ae83..d7864e0 100644
--- a/src/main/java/dev/isxander/yacl/gui/controllers/TickBoxController.java
+++ b/src/main/java/dev/isxander/yacl/gui/controllers/TickBoxController.java
@@ -63,23 +63,27 @@ public class TickBoxController implements Controller<Boolean> {
int outlineY1 = dim.centerY() - outlineSize / 2;
int outlineX2 = dim.xLimit() - getXPadding();
int outlineY2 = dim.centerY() + outlineSize / 2;
- drawOutline(matrices, outlineX1 + 1, outlineY1 + 1, outlineX2 + 1, outlineY2 + 1, 1, 0xFF404040);
- drawOutline(matrices, outlineX1, outlineY1, outlineX2, outlineY2, 1, -1);
+
+ int color = getValueColor();
+ int shadowColor = multiplyColor(color, 0.25f);
+
+ drawOutline(matrices, outlineX1 + 1, outlineY1 + 1, outlineX2 + 1, outlineY2 + 1, 1, shadowColor);
+ drawOutline(matrices, outlineX1, outlineY1, outlineX2, outlineY2, 1, color);
if (control.option().pendingValue()) {
- DrawableHelper.fill(matrices, outlineX1 + 3, outlineY1 + 3, outlineX2 - 1, outlineY2 - 1, 0xFF404040);
- DrawableHelper.fill(matrices, outlineX1 + 2, outlineY1 + 2, outlineX2 - 2, outlineY2 - 2, -1);
+ DrawableHelper.fill(matrices, outlineX1 + 3, outlineY1 + 3, outlineX2 - 1, outlineY2 - 1, shadowColor);
+ DrawableHelper.fill(matrices, outlineX1 + 2, outlineY1 + 2, outlineX2 - 2, outlineY2 - 2, color);
}
}
@Override
protected void drawValueText(MatrixStack matrices, int mouseX, int mouseY, float delta) {
- if (!hovered)
+ if (!isHovered())
drawHoveredControl(matrices, mouseX, mouseY, delta);
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
- if (!isMouseOver(mouseX, mouseY))
+ if (!isMouseOver(mouseX, mouseY) || !isAvailable())
return false;
toggleSetting();
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 fa763b7..d07377a 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
@@ -51,7 +51,7 @@ public class SliderControllerElement extends ControllerWidget<ISliderController<
@Override
protected void drawValueText(MatrixStack matrices, int mouseX, int mouseY, float delta) {
matrices.push();
- if (hovered || focused)
+ if (isHovered())
matrices.translate(-(sliderBounds.width() + 6 + getThumbWidth() / 2f), 0, 0);
super.drawValueText(matrices, mouseX, mouseY, delta);
matrices.pop();
@@ -59,7 +59,7 @@ public class SliderControllerElement extends ControllerWidget<ISliderController<
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
- if (button != 0 || !sliderBounds.isPointInside((int) mouseX, (int) mouseY))
+ if (!isAvailable() || button != 0 || !sliderBounds.isPointInside((int) mouseX, (int) mouseY))
return false;
mouseDown = true;
@@ -70,7 +70,7 @@ public class SliderControllerElement extends ControllerWidget<ISliderController<
@Override
public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
- if (button != 0 || !mouseDown)
+ if (!isAvailable() || button != 0 || !mouseDown)
return false;
setValueFromMouse(mouseX);
@@ -84,7 +84,7 @@ public class SliderControllerElement extends ControllerWidget<ISliderController<
@Override
public boolean mouseScrolled(double mouseX, double mouseY, double amount) {
- if ((!isMouseOver(mouseX, mouseY)) || (!Screen.hasShiftDown() && !Screen.hasControlDown()))
+ if (!isAvailable() || (!isMouseOver(mouseX, mouseY)) || (!Screen.hasShiftDown() && !Screen.hasControlDown()))
return false;
incrementValue(amount);
@@ -93,7 +93,7 @@ public class SliderControllerElement extends ControllerWidget<ISliderController<
@Override
public boolean mouseReleased(double mouseX, double mouseY, int button) {
- if (mouseDown)
+ if (isAvailable() && mouseDown)
playDownSound();
mouseDown = false;
diff --git a/src/main/java/dev/isxander/yacl/gui/controllers/string/StringControllerElement.java b/src/main/java/dev/isxander/yacl/gui/controllers/string/StringControllerElement.java
index c606d69..8598172 100644
--- a/src/main/java/dev/isxander/yacl/gui/controllers/string/StringControllerElement.java
+++ b/src/main/java/dev/isxander/yacl/gui/controllers/string/StringControllerElement.java
@@ -56,7 +56,7 @@ public class StringControllerElement extends ControllerWidget<IStringController<
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
- if (inputFieldBounds.isPointInside((int) mouseX, (int) mouseY)) {
+ if (isAvailable() && inputFieldBounds.isPointInside((int) mouseX, (int) mouseY)) {
if (!inputFieldFocused) {
inputFieldFocused = true;
caretPos = getDefaultCarotPos();