diff options
author | xander <xander@isxander.dev> | 2022-09-03 17:23:55 +0100 |
---|---|---|
committer | xander <xander@isxander.dev> | 2022-09-03 17:24:03 +0100 |
commit | b629229b96cb17b130f406893a219a7cd8c0e10f (patch) | |
tree | 9f56f3fae39e0a3dde220c8cea68aa0519bd0adc /src/main/java | |
parent | 1d3c4c7b7426682e49562fc6d573a72b5889ad58 (diff) | |
download | YetAnotherConfigLib-b629229b96cb17b130f406893a219a7cd8c0e10f.tar.gz YetAnotherConfigLib-b629229b96cb17b130f406893a219a7cd8c0e10f.tar.bz2 YetAnotherConfigLib-b629229b96cb17b130f406893a219a7cd8c0e10f.zip |
render current category as hovered not disabled
Diffstat (limited to 'src/main/java')
3 files changed, 38 insertions, 16 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(); } |