aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/cc/polyfrost/oneconfig/config/elements
diff options
context:
space:
mode:
authorDeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>2022-06-06 18:20:23 +0200
committerDeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>2022-06-06 18:20:23 +0200
commit21d31344a151dfe94c79a20b503af55120c63b63 (patch)
tree6bae89e3532b2ed976a493ff8d6b5b7bfed94221 /src/main/java/cc/polyfrost/oneconfig/config/elements
parent462d5976f3654f40229ff61391e7e55d0819d82d (diff)
downloadOneConfig-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.java35
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java15
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++;