aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/isxander/yacl/api/utils
diff options
context:
space:
mode:
authorxander <xander@isxander.dev>2022-09-01 08:57:59 +0100
committerxander <xander@isxander.dev>2022-09-01 08:57:59 +0100
commit6f8ef7daaafd71090b2c334c10eadc8dedc738d9 (patch)
treed4054a65d99070c944132be83d25e109750dc5f9 /src/main/java/dev/isxander/yacl/api/utils
parent9d0a5e937f97c1c17d034393e01636d5241f376a (diff)
downloadYetAnotherConfigLib-6f8ef7daaafd71090b2c334c10eadc8dedc738d9.tar.gz
YetAnotherConfigLib-6f8ef7daaafd71090b2c334c10eadc8dedc738d9.tar.bz2
YetAnotherConfigLib-6f8ef7daaafd71090b2c334c10eadc8dedc738d9.zip
GUI Implementation
Added groups Added button "option" Added test mod
Diffstat (limited to 'src/main/java/dev/isxander/yacl/api/utils')
-rw-r--r--src/main/java/dev/isxander/yacl/api/utils/Dimension.java21
-rw-r--r--src/main/java/dev/isxander/yacl/api/utils/OptionUtils.java28
2 files changed, 49 insertions, 0 deletions
diff --git a/src/main/java/dev/isxander/yacl/api/utils/Dimension.java b/src/main/java/dev/isxander/yacl/api/utils/Dimension.java
index cf7127a..69958b1 100644
--- a/src/main/java/dev/isxander/yacl/api/utils/Dimension.java
+++ b/src/main/java/dev/isxander/yacl/api/utils/Dimension.java
@@ -12,8 +12,29 @@ public interface Dimension<T extends Number> {
T xLimit();
T yLimit();
+ T centerX();
+ T centerY();
+
boolean isPointInside(T x, T y);
+ Dimension<T> clone();
+
+ Dimension<T> setX(T x);
+ Dimension<T> setY(T y);
+ Dimension<T> setWidth(T width);
+ Dimension<T> setHeight(T height);
+
+ Dimension<T> withX(T x);
+ Dimension<T> withY(T y);
+ Dimension<T> withWidth(T width);
+ Dimension<T> withHeight(T height);
+
+ Dimension<T> move(T x, T y);
+ Dimension<T> expand(T width, T height);
+
+ Dimension<T> moved(T x, T y);
+ Dimension<T> expanded(T width, T height);
+
static Dimension<Integer> ofInt(int x, int y, int width, int height) {
return new DimensionIntegerImpl(x, y, width, height);
}
diff --git a/src/main/java/dev/isxander/yacl/api/utils/OptionUtils.java b/src/main/java/dev/isxander/yacl/api/utils/OptionUtils.java
new file mode 100644
index 0000000..ed51683
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl/api/utils/OptionUtils.java
@@ -0,0 +1,28 @@
+package dev.isxander.yacl.api.utils;
+
+import dev.isxander.yacl.api.ConfigCategory;
+import dev.isxander.yacl.api.Option;
+import dev.isxander.yacl.api.OptionGroup;
+import dev.isxander.yacl.api.YetAnotherConfigLib;
+
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+public class OptionUtils {
+ public static void consumeOptions(YetAnotherConfigLib yacl, Function<Option<?>, Boolean> consumer) {
+ for (ConfigCategory category : yacl.categories()) {
+ for (OptionGroup group : category.groups()) {
+ for (Option<?> option : group.options()) {
+ if (!consumer.apply(option)) return;
+ }
+ }
+ }
+ }
+
+ public static void forEachOptions(YetAnotherConfigLib yacl, Consumer<Option<?>> consumer) {
+ consumeOptions(yacl, (opt) -> {
+ consumer.accept(opt);
+ return true;
+ });
+ }
+}