From 4d977cc9764ecf0073650f126700f6ff638fa06b Mon Sep 17 00:00:00 2001 From: xander Date: Thu, 1 Sep 2022 11:58:49 +0100 Subject: javadoc! added LongSliderController renamed Control -> Controller add minecraft simple option binding constructor --- .../isxander/yacl/gui/controllers/EnumControl.java | 77 ---------------------- 1 file changed, 77 deletions(-) delete mode 100644 src/main/java/dev/isxander/yacl/gui/controllers/EnumControl.java (limited to 'src/main/java/dev/isxander/yacl/gui/controllers/EnumControl.java') diff --git a/src/main/java/dev/isxander/yacl/gui/controllers/EnumControl.java b/src/main/java/dev/isxander/yacl/gui/controllers/EnumControl.java deleted file mode 100644 index d032937..0000000 --- a/src/main/java/dev/isxander/yacl/gui/controllers/EnumControl.java +++ /dev/null @@ -1,77 +0,0 @@ -package dev.isxander.yacl.gui.controllers; - -import dev.isxander.yacl.api.Control; -import dev.isxander.yacl.api.NameableEnum; -import dev.isxander.yacl.api.Option; -import dev.isxander.yacl.api.utils.Dimension; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.text.Text; - -import java.util.function.Function; - -public class EnumControl> implements Control { - private final Option option; - private final Function valueFormatter; - private final Class enumClass; - - public EnumControl(Option option, Class enumClass) { - this(option, enumClass, value -> { - if (value instanceof NameableEnum nameableEnum) - return nameableEnum.getDisplayName(); - return Text.of(value.name()); - }); - } - - public EnumControl(Option option, Class enumClass, Function valueFormatter) { - this.option = option; - this.valueFormatter = valueFormatter; - this.enumClass = enumClass; - } - - @Override - public Option option() { - return option; - } - - @Override - public Text formatValue() { - return valueFormatter.apply(option().pendingValue()); - } - - @Override - public ControlWidget> provideWidget(Screen screen, Dimension widgetDimension) { - return new EnumControlElement<>(this, screen, widgetDimension, enumClass.getEnumConstants()); - } - - public static class EnumControlElement> extends ControlWidget> { - private final T[] values; - - public EnumControlElement(EnumControl control, Screen screen, Dimension dim, T[] values) { - super(control, screen, dim); - this.values = values; - } - - @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (!isMouseOver(mouseX, mouseY) || (button != 0 && button != 1)) - return false; - - playDownSound(); - - int change = button == 1 || Screen.hasShiftDown() ? -1 : 1; - int targetIdx = control.option().pendingValue().ordinal() + change; - if (targetIdx >= values.length) { - targetIdx -= values.length; - } else if (targetIdx < 0) { - targetIdx += values.length; - } - control.option().requestSet(values[targetIdx]); - return true; - } - - @Override - protected int getHoveredControlWidth() { - return getUnhoveredControlWidth(); - } - } -} -- cgit