aboutsummaryrefslogtreecommitdiff
path: root/src/client/java/dev/isxander/yacl/impl/ButtonOptionImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/java/dev/isxander/yacl/impl/ButtonOptionImpl.java')
-rw-r--r--src/client/java/dev/isxander/yacl/impl/ButtonOptionImpl.java142
1 files changed, 142 insertions, 0 deletions
diff --git a/src/client/java/dev/isxander/yacl/impl/ButtonOptionImpl.java b/src/client/java/dev/isxander/yacl/impl/ButtonOptionImpl.java
new file mode 100644
index 0000000..dcb9c7a
--- /dev/null
+++ b/src/client/java/dev/isxander/yacl/impl/ButtonOptionImpl.java
@@ -0,0 +1,142 @@
+package dev.isxander.yacl.impl;
+
+import com.google.common.collect.ImmutableSet;
+import dev.isxander.yacl.api.*;
+import dev.isxander.yacl.gui.YACLScreen;
+import net.minecraft.text.Text;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.function.BiConsumer;
+import java.util.function.Function;
+
+public class ButtonOptionImpl implements ButtonOption {
+ private final Text name;
+ private final Text tooltip;
+ private final BiConsumer<YACLScreen, ButtonOption> action;
+ private boolean available;
+ private final Controller<BiConsumer<YACLScreen, ButtonOption>> controller;
+ private final Binding<BiConsumer<YACLScreen, ButtonOption>> binding;
+
+ public ButtonOptionImpl(
+ @NotNull Text name,
+ @Nullable Text tooltip,
+ @NotNull BiConsumer<YACLScreen, ButtonOption> action,
+ boolean available,
+ @NotNull Function<ButtonOption, Controller<BiConsumer<YACLScreen, ButtonOption>>> controlGetter
+ ) {
+ this.name = name;
+ this.tooltip = tooltip;
+ this.action = action;
+ this.available = available;
+ this.controller = controlGetter.apply(this);
+ this.binding = new EmptyBinderImpl();
+ }
+
+ @Override
+ public @NotNull Text name() {
+ return name;
+ }
+
+ @Override
+ public @NotNull Text tooltip() {
+ return tooltip;
+ }
+
+ @Override
+ public BiConsumer<YACLScreen, ButtonOption> action() {
+ return action;
+ }
+
+ @Override
+ public boolean available() {
+ return available;
+ }
+
+ @Override
+ public void setAvailable(boolean available) {
+ this.available = available;
+ }
+
+ @Override
+ public @NotNull Controller<BiConsumer<YACLScreen, ButtonOption>> controller() {
+ return controller;
+ }
+
+ @Override
+ public @NotNull Binding<BiConsumer<YACLScreen, ButtonOption>> binding() {
+ return binding;
+ }
+
+ @Override
+ public @NotNull Class<BiConsumer<YACLScreen, ButtonOption>> typeClass() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public @NotNull ImmutableSet<OptionFlag> flags() {
+ return ImmutableSet.of();
+ }
+
+ @Override
+ public boolean requiresRestart() {
+ return false;
+ }
+
+ @Override
+ public boolean changed() {
+ return false;
+ }
+
+ @Override
+ public @NotNull BiConsumer<YACLScreen, ButtonOption> pendingValue() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void requestSet(BiConsumer<YACLScreen, ButtonOption> value) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean applyValue() {
+ return false;
+ }
+
+ @Override
+ public void forgetPendingValue() {
+
+ }
+
+ @Override
+ public void requestSetDefault() {
+
+ }
+
+ @Override
+ public boolean isPendingValueDefault() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void addListener(BiConsumer<Option<BiConsumer<YACLScreen, ButtonOption>>, BiConsumer<YACLScreen, ButtonOption>> changedListener) {
+
+ }
+
+ private static class EmptyBinderImpl implements Binding<BiConsumer<YACLScreen, ButtonOption>> {
+ @Override
+ public void setValue(BiConsumer<YACLScreen, ButtonOption> value) {
+
+ }
+
+ @Override
+ public BiConsumer<YACLScreen, ButtonOption> getValue() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public BiConsumer<YACLScreen, ButtonOption> defaultValue() {
+ throw new UnsupportedOperationException();
+ }
+ }
+}