From 6f8ef7daaafd71090b2c334c10eadc8dedc738d9 Mon Sep 17 00:00:00 2001 From: xander Date: Thu, 1 Sep 2022 08:57:59 +0100 Subject: GUI Implementation Added groups Added button "option" Added test mod --- .../dev/isxander/yacl/api/utils/Dimension.java | 21 ++++++++++++++++ .../dev/isxander/yacl/api/utils/OptionUtils.java | 28 ++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 src/main/java/dev/isxander/yacl/api/utils/OptionUtils.java (limited to 'src/main/java/dev/isxander/yacl/api/utils') 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 xLimit(); T yLimit(); + T centerX(); + T centerY(); + boolean isPointInside(T x, T y); + Dimension clone(); + + Dimension setX(T x); + Dimension setY(T y); + Dimension setWidth(T width); + Dimension setHeight(T height); + + Dimension withX(T x); + Dimension withY(T y); + Dimension withWidth(T width); + Dimension withHeight(T height); + + Dimension move(T x, T y); + Dimension expand(T width, T height); + + Dimension moved(T x, T y); + Dimension expanded(T width, T height); + static Dimension 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, 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> consumer) { + consumeOptions(yacl, (opt) -> { + consumer.accept(opt); + return true; + }); + } +} -- cgit