aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/isxander/yacl/impl
diff options
context:
space:
mode:
authorisXander <isxander@users.noreply.github.com>2022-08-30 20:04:21 +0100
committerisXander <isxander@users.noreply.github.com>2022-08-30 20:04:21 +0100
commit9d0a5e937f97c1c17d034393e01636d5241f376a (patch)
tree40b15bc97835c798d6b4489afaf8c84970c3ea0b /src/main/java/dev/isxander/yacl/impl
parentd643a44c866504a642f9de0055417a82585d96e5 (diff)
downloadYetAnotherConfigLib-9d0a5e937f97c1c17d034393e01636d5241f376a.tar.gz
YetAnotherConfigLib-9d0a5e937f97c1c17d034393e01636d5241f376a.tar.bz2
YetAnotherConfigLib-9d0a5e937f97c1c17d034393e01636d5241f376a.zip
Builder API done!
gui now...
Diffstat (limited to 'src/main/java/dev/isxander/yacl/impl')
-rw-r--r--src/main/java/dev/isxander/yacl/impl/ConfigCategoryImpl.java12
-rw-r--r--src/main/java/dev/isxander/yacl/impl/GenericBindingImpl.java36
-rw-r--r--src/main/java/dev/isxander/yacl/impl/OptionImpl.java65
-rw-r--r--src/main/java/dev/isxander/yacl/impl/YetAnotherConfigLibImpl.java16
-rw-r--r--src/main/java/dev/isxander/yacl/impl/utils/DimensionIntegerImpl.java22
5 files changed, 151 insertions, 0 deletions
diff --git a/src/main/java/dev/isxander/yacl/impl/ConfigCategoryImpl.java b/src/main/java/dev/isxander/yacl/impl/ConfigCategoryImpl.java
new file mode 100644
index 0000000..0f6f33b
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl/impl/ConfigCategoryImpl.java
@@ -0,0 +1,12 @@
+package dev.isxander.yacl.impl;
+
+import com.google.common.collect.ImmutableList;
+import dev.isxander.yacl.api.ConfigCategory;
+import dev.isxander.yacl.api.Option;
+import net.minecraft.text.Text;
+import org.jetbrains.annotations.ApiStatus;
+
+@ApiStatus.Internal
+public record ConfigCategoryImpl(Text name, ImmutableList<Option<?>> options) implements ConfigCategory {
+
+}
diff --git a/src/main/java/dev/isxander/yacl/impl/GenericBindingImpl.java b/src/main/java/dev/isxander/yacl/impl/GenericBindingImpl.java
new file mode 100644
index 0000000..f2321c7
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl/impl/GenericBindingImpl.java
@@ -0,0 +1,36 @@
+package dev.isxander.yacl.impl;
+
+import dev.isxander.yacl.api.Binding;
+import org.jetbrains.annotations.ApiStatus;
+
+import java.util.function.Consumer;
+import java.util.function.Supplier;
+
+@ApiStatus.Internal
+public class GenericBindingImpl<T> implements Binding<T> {
+ private final T def;
+ private final Supplier<T> getter;
+ private final Consumer<T> setter;
+
+ public GenericBindingImpl(T def, Supplier<T> getter, Consumer<T> setting) {
+ this.def = def;
+ this.getter = getter;
+ this.setter = setting;
+ }
+
+
+ @Override
+ public void setValue(T value) {
+ setter.accept(value);
+ }
+
+ @Override
+ public T getValue() {
+ return getter.get();
+ }
+
+ @Override
+ public void resetValue() {
+ setValue(def);
+ }
+}
diff --git a/src/main/java/dev/isxander/yacl/impl/OptionImpl.java b/src/main/java/dev/isxander/yacl/impl/OptionImpl.java
new file mode 100644
index 0000000..3f6e5c2
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl/impl/OptionImpl.java
@@ -0,0 +1,65 @@
+package dev.isxander.yacl.impl;
+
+import dev.isxander.yacl.api.Binding;
+import dev.isxander.yacl.api.Control;
+import dev.isxander.yacl.api.Option;
+import net.minecraft.text.Text;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+@ApiStatus.Internal
+public class OptionImpl<T> implements Option<T> {
+ private final Text name;
+ private final Text tooltip;
+ private final Control<T> control;
+ private final Binding<T> binding;
+
+ private @Nullable T changedValue = null;
+
+ public OptionImpl(@NotNull Text name,
+ @Nullable Text tooltip,
+ @NotNull Control<T> control,
+ @NotNull Binding<T> binding) {
+ this.name = name;
+ this.tooltip = tooltip;
+ this.control = control;
+ this.binding = binding;
+ }
+
+ @Override
+ public @NotNull Text name() {
+ return name;
+ }
+
+ @Override
+ public @Nullable Text tooltip() {
+ return tooltip;
+ }
+
+ @Override
+ public @NotNull Control<T> control() {
+ return control;
+ }
+
+ @Override
+ public @NotNull Binding<T> binding() {
+ return binding;
+ }
+
+ @Override
+ public boolean changed() {
+ return !binding().getValue().equals(changedValue);
+ }
+
+ @Override
+ public void requestSet(T value) {
+ this.changedValue = value;
+ }
+
+ @Override
+ public void applyValue() {
+ if (changedValue != null)
+ binding().setValue(changedValue);
+ }
+}
diff --git a/src/main/java/dev/isxander/yacl/impl/YetAnotherConfigLibImpl.java b/src/main/java/dev/isxander/yacl/impl/YetAnotherConfigLibImpl.java
new file mode 100644
index 0000000..0cef49f
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl/impl/YetAnotherConfigLibImpl.java
@@ -0,0 +1,16 @@
+package dev.isxander.yacl.impl;
+
+import com.google.common.collect.ImmutableList;
+import dev.isxander.yacl.api.ConfigCategory;
+import dev.isxander.yacl.api.YetAnotherConfigLib;
+import net.minecraft.client.gui.screen.Screen;
+import net.minecraft.text.Text;
+import org.jetbrains.annotations.ApiStatus;
+
+@ApiStatus.Internal
+public record YetAnotherConfigLibImpl(Text title, ImmutableList<ConfigCategory> categories) implements YetAnotherConfigLib {
+ @Override
+ public Screen generateScreen() {
+ return null;
+ }
+}
diff --git a/src/main/java/dev/isxander/yacl/impl/utils/DimensionIntegerImpl.java b/src/main/java/dev/isxander/yacl/impl/utils/DimensionIntegerImpl.java
new file mode 100644
index 0000000..908157d
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl/impl/utils/DimensionIntegerImpl.java
@@ -0,0 +1,22 @@
+package dev.isxander.yacl.impl.utils;
+
+import dev.isxander.yacl.api.utils.Dimension;
+import org.jetbrains.annotations.ApiStatus;
+
+@ApiStatus.Internal
+public record DimensionIntegerImpl(Integer x, Integer y, Integer width, Integer height) implements Dimension<Integer> {
+ @Override
+ public Integer xLimit() {
+ return x + width;
+ }
+
+ @Override
+ public Integer yLimit() {
+ return y + height;
+ }
+
+ @Override
+ public boolean isPointInside(Integer x, Integer y) {
+ return x >= x() && x <= xLimit() && y >= y() && y <= yLimit();
+ }
+}