diff options
author | isXander <isxander@users.noreply.github.com> | 2022-08-30 20:04:21 +0100 |
---|---|---|
committer | isXander <isxander@users.noreply.github.com> | 2022-08-30 20:04:21 +0100 |
commit | 9d0a5e937f97c1c17d034393e01636d5241f376a (patch) | |
tree | 40b15bc97835c798d6b4489afaf8c84970c3ea0b /src/main/java/dev/isxander/yacl/impl | |
parent | d643a44c866504a642f9de0055417a82585d96e5 (diff) | |
download | YetAnotherConfigLib-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')
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(); + } +} |