aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java
diff options
context:
space:
mode:
authorWyvest <45589059+Wyvest@users.noreply.github.com>2022-06-07 21:15:51 +0700
committerWyvest <45589059+Wyvest@users.noreply.github.com>2022-06-07 21:15:51 +0700
commit98ed87a68284f1f0756b01c07d957cbb4bd4e09c (patch)
treec72f4563aab765dbffa3804475a4e7e57907bc76 /src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java
parent44f69da8e5eb1a10e3833bd55dd97a7bd274f2ca (diff)
parent4d447988d5318895a92256cde93420456a04bd57 (diff)
downloadOneConfig-98ed87a68284f1f0756b01c07d957cbb4bd4e09c.tar.gz
OneConfig-98ed87a68284f1f0756b01c07d957cbb4bd4e09c.tar.bz2
OneConfig-98ed87a68284f1f0756b01c07d957cbb4bd4e09c.zip
Merge branch 'master' of https://github.com/Polyfrost/OneConfig
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java')
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java35
1 files changed, 20 insertions, 15 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;
}
}