diff options
author | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-06-06 18:20:23 +0200 |
---|---|---|
committer | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-06-06 18:20:23 +0200 |
commit | 21d31344a151dfe94c79a20b503af55120c63b63 (patch) | |
tree | 6bae89e3532b2ed976a493ff8d6b5b7bfed94221 /src/main/java/cc/polyfrost/oneconfig/config/elements | |
parent | 462d5976f3654f40229ff61391e7e55d0819d82d (diff) | |
download | OneConfig-21d31344a151dfe94c79a20b503af55120c63b63.tar.gz OneConfig-21d31344a151dfe94c79a20b503af55120c63b63.tar.bz2 OneConfig-21d31344a151dfe94c79a20b503af55120c63b63.zip |
rewrite config system
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/config/elements')
-rw-r--r-- | src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java | 35 | ||||
-rw-r--r-- | src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java | 15 |
2 files changed, 27 insertions, 23 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java b/src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java index d4efeaa..947156a 100644 --- a/src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java +++ b/src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java @@ -1,15 +1,18 @@ package cc.polyfrost.oneconfig.config.elements; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.function.Supplier; @SuppressWarnings({"unused"}) public abstract class BasicOption { public final int size; protected final Field field; - protected final String name; protected final Object parent; - private Supplier<Boolean> dependency; + public final String name; + public final String category; + public final String subcategory; + private final ArrayList<Supplier<Boolean>> dependencies = new ArrayList<>(); /** * Initialize option @@ -19,11 +22,13 @@ public abstract class BasicOption { * @param name name of option * @param size size of option, 0 for single column, 1 for double. */ - public BasicOption(Field field, Object parent, String name, int size) { + public BasicOption(Field field, Object parent, String name, String category, String subcategory, int size) { this.field = field; this.parent = parent; this.name = name; this.size = size; + this.category = category; + this.subcategory = subcategory; if (field != null) field.setAccessible(true); } @@ -78,21 +83,21 @@ public abstract class BasicOption { } /** - * @return If the component has an option to render at half size + * Add a condition to this option + * + * @param supplier The dependency */ - public boolean hasHalfSize() { - return true; - } - - public String getName() { - return name; - } - - public void setDependency(Supplier<Boolean> supplier) { - this.dependency = supplier; + public void addDependency(Supplier<Boolean> supplier) { + this.dependencies.add(supplier); } + /** + * @return If the option is enabled, based on the dependencies + */ protected boolean isEnabled() { - return dependency == null || dependency.get(); + for (Supplier<Boolean> dependency : dependencies) { + if (!dependency.get()) return false; + } + return true; } } diff --git a/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java b/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java index ff1d770..66714a4 100644 --- a/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java +++ b/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java @@ -1,7 +1,6 @@ package cc.polyfrost.oneconfig.config.elements; -import cc.polyfrost.oneconfig.gui.Colors; -import cc.polyfrost.oneconfig.config.elements.BasicOption; +import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.gui.OneConfigGui; import cc.polyfrost.oneconfig.gui.elements.config.ConfigPageButton; import cc.polyfrost.oneconfig.renderer.RenderManager; @@ -31,14 +30,14 @@ public class OptionSubcategory { filteredTop.clear(); filteredBottom.clear(); for (BasicOption option : options) { - if (option.getName().toLowerCase().contains(filter)) filteredOptions.add(option); + if (option.name.toLowerCase().contains(filter)) filteredOptions.add(option); } for (ConfigPageButton page : topButtons) { - if (page.getName().toLowerCase().contains(filter) || page.description.toLowerCase().contains(filter)) + if (page.name.toLowerCase().contains(filter) || page.description.toLowerCase().contains(filter)) filteredTop.add(page); } for (ConfigPageButton page : bottomButtons) { - if (page.getName().toLowerCase().contains(filter) || page.description.toLowerCase().contains(filter)) + if (page.name.toLowerCase().contains(filter) || page.description.toLowerCase().contains(filter)) filteredBottom.add(page); } } @@ -60,7 +59,7 @@ public class OptionSubcategory { BasicOption option = filteredOptions.get(i); if (i + 1 < filteredOptions.size()) { BasicOption nextOption = filteredOptions.get(i + 1); - if (option.size == 1 && option.hasHalfSize() && nextOption.size == 1 && nextOption.hasHalfSize()) { + if (option.size == 1 && nextOption.size == 1) { backgroundSize += Math.max(option.getHeight(), nextOption.getHeight()) + 16; i++; continue; @@ -79,7 +78,7 @@ public class OptionSubcategory { option.draw(vg, x, optionY); if (i + 1 < filteredOptions.size()) { BasicOption nextOption = filteredOptions.get(i + 1); - if (option.size == 1 && option.hasHalfSize() && nextOption.size == 1 && nextOption.hasHalfSize()) { + if (option.size == 1 && nextOption.size == 1) { nextOption.draw(vg, x + 512, optionY); optionY += Math.max(option.getHeight(), nextOption.getHeight()) + 16; i++; @@ -105,7 +104,7 @@ public class OptionSubcategory { option.drawLast(vg, x, drawLastY); if (i + 1 < filteredOptions.size()) { BasicOption nextOption = filteredOptions.get(i + 1); - if (option.size == 1 && option.hasHalfSize() && nextOption.size == 1 && nextOption.hasHalfSize()) { + if (option.size == 1 && nextOption.size == 1) { nextOption.drawLast(vg, x + 512, drawLastY); drawLastY += Math.max(option.getHeight(), nextOption.getHeight()) + 16; i++; |