aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorxander <xander@isxander.dev>2022-09-03 17:23:55 +0100
committerxander <xander@isxander.dev>2022-09-03 17:24:03 +0100
commitb629229b96cb17b130f406893a219a7cd8c0e10f (patch)
tree9f56f3fae39e0a3dde220c8cea68aa0519bd0adc /src/main/java
parent1d3c4c7b7426682e49562fc6d573a72b5889ad58 (diff)
downloadYetAnotherConfigLib-b629229b96cb17b130f406893a219a7cd8c0e10f.tar.gz
YetAnotherConfigLib-b629229b96cb17b130f406893a219a7cd8c0e10f.tar.bz2
YetAnotherConfigLib-b629229b96cb17b130f406893a219a7cd8c0e10f.zip
render current category as hovered not disabled
Diffstat (limited to 'src/main/java')
-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
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();
}