diff options
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")) |