aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/isxander/yacl/impl
diff options
context:
space:
mode:
authorxander <xander@isxander.dev>2022-09-03 14:08:53 +0100
committerxander <xander@isxander.dev>2022-09-03 14:08:53 +0100
commit3027527637373d7df682bf56368cf176ffcc19a8 (patch)
tree7d06ac25b09b1944626e3007ef6831f455c36ec0 /src/main/java/dev/isxander/yacl/impl
parentbe878535f0cd82fe3a0a7c7268e1e6fff5c76a2e (diff)
downloadYetAnotherConfigLib-3027527637373d7df682bf56368cf176ffcc19a8.tar.gz
YetAnotherConfigLib-3027527637373d7df682bf56368cf176ffcc19a8.tar.bz2
YetAnotherConfigLib-3027527637373d7df682bf56368cf176ffcc19a8.zip
pass through type class to option for controllers to use
Diffstat (limited to 'src/main/java/dev/isxander/yacl/impl')
-rw-r--r--src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java5
-rw-r--r--src/main/java/dev/isxander/yacl/impl/OptionImpl.java11
2 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java b/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java
index 748dd0c..d3fbaa6 100644
--- a/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java
+++ b/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java
@@ -59,6 +59,11 @@ public class ButtonOptionImpl implements ButtonOption {
}
@Override
+ public @NotNull Class<Consumer<YACLScreen>> typeClass() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public boolean changed() {
return false;
}
diff --git a/src/main/java/dev/isxander/yacl/impl/OptionImpl.java b/src/main/java/dev/isxander/yacl/impl/OptionImpl.java
index 176bf93..2d66aee 100644
--- a/src/main/java/dev/isxander/yacl/impl/OptionImpl.java
+++ b/src/main/java/dev/isxander/yacl/impl/OptionImpl.java
@@ -17,18 +17,22 @@ public class OptionImpl<T> implements Option<T> {
private final Controller<T> controller;
private final Binding<T> binding;
+ private final Class<T> typeClass;
+
private T pendingValue;
public OptionImpl(
@NotNull Text name,
@Nullable Text tooltip,
@NotNull Function<Option<T>, Controller<T>> controlGetter,
- @NotNull Binding<T> binding
+ @NotNull Binding<T> binding,
+ @NotNull Class<T> typeClass
) {
this.name = name;
this.tooltip = tooltip;
this.controller = controlGetter.apply(this);
this.binding = binding;
+ this.typeClass = typeClass;
this.pendingValue = binding().getValue();
}
@@ -53,6 +57,11 @@ public class OptionImpl<T> implements Option<T> {
}
@Override
+ public @NotNull Class<T> typeClass() {
+ return typeClass;
+ }
+
+ @Override
public boolean changed() {
return !binding().getValue().equals(pendingValue);
}