aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/dev/isxander/yacl/gui/CategoryWidget.java28
-rw-r--r--src/main/java/dev/isxander/yacl/gui/TooltipButtonWidget.java8
-rw-r--r--src/main/java/dev/isxander/yacl/gui/YACLScreen.java18
-rw-r--r--src/testmod/java/dev/isxander/yacl/test/ModMenuIntegration.java26
4 files changed, 53 insertions, 27 deletions
diff --git a/src/main/java/dev/isxander/yacl/gui/CategoryWidget.java b/src/main/java/dev/isxander/yacl/gui/CategoryWidget.java
new file mode 100644
index 0000000..65daef3
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl/gui/CategoryWidget.java
@@ -0,0 +1,28 @@
+package dev.isxander.yacl.gui;
+
+import dev.isxander.yacl.api.ConfigCategory;
+import net.minecraft.client.sound.SoundManager;
+
+public class CategoryWidget extends TooltipButtonWidget {
+ private final int categoryIndex;
+
+ public CategoryWidget(YACLScreen screen, ConfigCategory category, int categoryIndex, int x, int y, int width, int height) {
+ super(screen, x, y, width, height, category.name(), category.tooltip(), btn -> screen.changeCategory(screen.categoryButtons.indexOf(btn)));
+ this.categoryIndex = categoryIndex;
+ }
+
+ private boolean isCurrentCategory() {
+ return ((YACLScreen) screen).currentCategoryIdx == categoryIndex;
+ }
+
+ @Override
+ protected int getYImage(boolean hovered) {
+ return super.getYImage(hovered || isCurrentCategory());
+ }
+
+ @Override
+ public void playDownSound(SoundManager soundManager) {
+ if (!isCurrentCategory())
+ super.playDownSound(soundManager);
+ }
+}
diff --git a/src/main/java/dev/isxander/yacl/gui/TooltipButtonWidget.java b/src/main/java/dev/isxander/yacl/gui/TooltipButtonWidget.java
index b8abbbd..3131c97 100644
--- a/src/main/java/dev/isxander/yacl/gui/TooltipButtonWidget.java
+++ b/src/main/java/dev/isxander/yacl/gui/TooltipButtonWidget.java
@@ -11,11 +11,11 @@ import net.minecraft.text.Text;
import java.util.List;
public class TooltipButtonWidget extends ButtonWidget {
- private float hoveredTicks = 0;
- private int prevMouseX, prevMouseY;
+ protected float hoveredTicks = 0;
+ protected int prevMouseX, prevMouseY;
- private final Screen screen;
- private List<OrderedText> wrappedDescription;
+ protected final Screen screen;
+ protected List<OrderedText> wrappedDescription;
public TooltipButtonWidget(Screen screen, int x, int y, int width, int height, Text message, Text tooltip, PressAction onPress) {
super(x, y, width, height, message, onPress);
diff --git a/src/main/java/dev/isxander/yacl/gui/YACLScreen.java b/src/main/java/dev/isxander/yacl/gui/YACLScreen.java
index f464bfc..235364f 100644
--- a/src/main/java/dev/isxander/yacl/gui/YACLScreen.java
+++ b/src/main/java/dev/isxander/yacl/gui/YACLScreen.java
@@ -24,7 +24,7 @@ public class YACLScreen extends Screen {
private final Screen parent;
public OptionListWidget optionList;
- public final List<TooltipButtonWidget> categoryButtons;
+ public final List<CategoryWidget> categoryButtons;
public TooltipButtonWidget finishedSaveButton, cancelResetButton, undoButton;
public Text saveButtonMessage;
@@ -49,15 +49,14 @@ public class YACLScreen extends Screen {
Dimension<Integer> categoryDim = Dimension.ofInt(width / 3 / 2, padding, columnWidth - padding * 2, 20);
int idx = 0;
for (ConfigCategory category : config.categories()) {
- TooltipButtonWidget categoryWidget = new TooltipButtonWidget(
+ CategoryWidget categoryWidget = new CategoryWidget(
this,
+ category,
+ idx,
categoryDim.x() - categoryDim.width() / 2, categoryDim.y(),
- categoryDim.width(), categoryDim.height(),
- category.name(), category.tooltip(),
- (btn) -> changeCategory(categoryButtons.indexOf(btn))
+ categoryDim.width(), categoryDim.height()
);
- if (idx == currentCategoryIdx)
- categoryWidget.active = false;
+
categoryButtons.add(categoryWidget);
addDrawableChild(categoryWidget);
@@ -123,11 +122,6 @@ public class YACLScreen extends Screen {
}
public void changeCategory(int idx) {
- int currentIndex = 0;
- for (ButtonWidget categoryWidget : categoryButtons) {
- categoryWidget.active = currentIndex != idx;
- currentIndex++;
- }
currentCategoryIdx = idx;
refreshGUI();
}
diff --git a/src/testmod/java/dev/isxander/yacl/test/ModMenuIntegration.java b/src/testmod/java/dev/isxander/yacl/test/ModMenuIntegration.java
index 3ba2a73..69d09b9 100644
--- a/src/testmod/java/dev/isxander/yacl/test/ModMenuIntegration.java
+++ b/src/testmod/java/dev/isxander/yacl/test/ModMenuIntegration.java
@@ -61,12 +61,6 @@ public class ModMenuIntegration implements ModMenuApi {
)
.controller(TickBoxController::new)
.build())
- .option(Option.createBuilder(boolean.class)
- .name(Text.of("Minecraft AutoJump"))
- .tooltip(Text.of("You can even bind minecraft options!"))
- .binding(Binding.minecraft(MinecraftClient.getInstance().options.getAutoJump()))
- .controller(TickBoxController::new)
- .build())
.build())
.group(OptionGroup.createBuilder()
.name(Text.of("Slider Controllers"))
@@ -118,11 +112,6 @@ public class ModMenuIntegration implements ModMenuApi {
)
.controller(EnumController::new)
.build())
- .option(Option.createBuilder(GraphicsMode.class)
- .name(Text.of("Minecraft Graphics Mode"))
- .binding(Binding.minecraft(MinecraftClient.getInstance().options.getGraphicsMode()))
- .controller(EnumController::new)
- .build())
.build())
.group(OptionGroup.createBuilder()
.name(Text.of("Buttons!"))
@@ -132,6 +121,21 @@ public class ModMenuIntegration implements ModMenuApi {
.controller(ActionController::new)
.build())
.build())
+ .group(OptionGroup.createBuilder()
+ .name(Text.of("Minecraft Bindings"))
+ .tooltip(Text.of("YACL can also bind Minecraft options!"))
+ .option(Option.createBuilder(boolean.class)
+ .name(Text.of("Minecraft AutoJump"))
+ .tooltip(Text.of("You can even bind minecraft options!"))
+ .binding(Binding.minecraft(MinecraftClient.getInstance().options.getAutoJump()))
+ .controller(TickBoxController::new)
+ .build())
+ .option(Option.createBuilder(GraphicsMode.class)
+ .name(Text.of("Minecraft Graphics Mode"))
+ .binding(Binding.minecraft(MinecraftClient.getInstance().options.getGraphicsMode()))
+ .controller(EnumController::new)
+ .build())
+ .build())
.build())
.category(ConfigCategory.createBuilder()
.name(Text.of("Group Test"))