aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/cc/polyfrost/oneconfig/config
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/config')
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceConfig.java197
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceName.java16
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilantAccessor.java11
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/migration/VigilanceMigrator.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/profiles/Profiles.java2
5 files changed, 2 insertions, 226 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceConfig.java b/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceConfig.java
deleted file mode 100644
index 97dd0cb..0000000
--- a/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceConfig.java
+++ /dev/null
@@ -1,197 +0,0 @@
-package cc.polyfrost.oneconfig.config.compatibility.vigilance;
-
-import cc.polyfrost.oneconfig.config.core.ConfigUtils;
-import cc.polyfrost.oneconfig.internal.config.core.ConfigCore;
-import cc.polyfrost.oneconfig.config.core.OneColor;
-import cc.polyfrost.oneconfig.config.data.Mod;
-import cc.polyfrost.oneconfig.config.elements.OptionPage;
-import cc.polyfrost.oneconfig.config.elements.BasicOption;
-import cc.polyfrost.oneconfig.config.Config;
-import cc.polyfrost.oneconfig.gui.elements.config.*;
-import cc.polyfrost.oneconfig.platform.Platform;
-import gg.essential.vigilance.Vigilant;
-import gg.essential.vigilance.data.*;
-import kotlin.reflect.KMutableProperty0;
-import kotlin.reflect.jvm.ReflectJvmMapping;
-
-import java.awt.*;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Objects;
-
-/**
- * This class is used to convert the Vigilance config to the new config system.
- * It is not meant to be used outside the config system.
- */
-public class VigilanceConfig extends Config {
- public final Vigilant vigilant;
-
- public VigilanceConfig(Mod modData, String configFile, Vigilant vigilant) {
- super(modData, configFile);
- this.vigilant = vigilant;
- initialize();
- }
-
- @Override
- public void initialize() {
- if (vigilant != null) {
- mod.config = this;
- generateOptionsList(mod.defaultPage);
- ConfigCore.mods.add(mod);
- }
- }
-
- @Override
- public void save() {
- vigilant.markDirty();
- vigilant.writeData();
- }
-
- @Override
- public void load() {
- //no-op
- }
-
- private void generateOptionsList(OptionPage page) {
- for (PropertyData option : ((VigilantAccessor) vigilant).getPropertyCollector().getProperties()) {
- PropertyAttributesExt attributes = option.getAttributesExt();
- if (attributes.getHidden()) continue;
- ArrayList<BasicOption> options = ConfigUtils.getSubCategory(page, getCategory(attributes), getSubcategory(attributes)).options;
- switch (attributes.getType()) {
- case SWITCH:
- options.add(new ConfigSwitch(getFieldOfProperty(option), option.getInstance(), getName(attributes), getCategory(attributes), getSubcategory(attributes), 2));
- break;
- case CHECKBOX:
- options.add(new ConfigCheckbox(getFieldOfProperty(option), option.getInstance(), getName(attributes),getCategory(attributes), getSubcategory(attributes), 2));
- break;
- case PARAGRAPH:
- case TEXT:
- options.add(new ConfigTextBox(getFieldOfProperty(option), option.getInstance(), getName(attributes), getCategory(attributes), getSubcategory(attributes), 2, attributes.getPlaceholder(), attributes.getProtected(), attributes.getType() == PropertyType.PARAGRAPH));
- break;
- case SELECTOR:
- options.add(new ConfigDropdown(getFieldOfProperty(option), option.getInstance(), getName(attributes), getCategory(attributes), getSubcategory(attributes), 2, attributes.getOptions().toArray(new String[0])));
- break;
- case PERCENT_SLIDER:
- options.add(new ConfigSlider(getFieldOfProperty(option), option.getInstance(), getName(attributes), getCategory(attributes), getSubcategory(attributes), 0, 1, 0));
- break;
- case DECIMAL_SLIDER:
- options.add(new ConfigSlider(getFieldOfProperty(option), option.getInstance(), getName(attributes), getCategory(attributes), getSubcategory(attributes), attributes.getMinF(), attributes.getMaxF(), 0));
- break;
- case NUMBER:
- options.add(new ConfigSlider(getFieldOfProperty(option), option.getInstance(), getName(attributes), getCategory(attributes), getSubcategory(attributes), attributes.getMin(), attributes.getMax(), 1));
- break;
- case SLIDER:
- options.add(new ConfigSlider(getFieldOfProperty(option), option.getInstance(), getName(attributes), getCategory(attributes), getSubcategory(attributes), attributes.getMin(), attributes.getMax(), 0));
- break;
- case COLOR:
- options.add(new CompatConfigColorElement(getFieldOfProperty(option), option.getInstance(), getCategory(attributes), getSubcategory(attributes), getName(attributes), 2));
- break;
- case BUTTON:
- options.add(new ConfigButton(() -> ((CallablePropertyValue) option.getValue()).invoke(option.getInstance()), option.getInstance(), getName(attributes), getCategory(attributes), getSubcategory(attributes), 2, attributes.getPlaceholder().isEmpty() ? "Activate" : attributes.getPlaceholder()));
- break;
- }
- if (attributes.getType() == PropertyType.SWITCH || attributes.getType() == PropertyType.CHECKBOX) {
- optionNames.put(PropertyKt.fullPropertyPath(option.getAttributesExt()), options.get(options.size() - 1));
- }
- }
- }
-
- private Field getFieldOfProperty(PropertyData data) {
- if (data.getValue() instanceof FieldBackedPropertyValue) {
- FieldBackedPropertyValue fieldBackedPropertyValue = (FieldBackedPropertyValue) data.getValue();
- try {
- Field field = fieldBackedPropertyValue.getClass().getDeclaredField("field");
- field.setAccessible(true);
- return (Field) field.get(fieldBackedPropertyValue);
- } catch (IllegalAccessException | NoSuchFieldException e) {
- throw new RuntimeException(e);
- }
- } else if (data.getValue() instanceof ValueBackedPropertyValue) {
- ValueBackedPropertyValue valueBackedPropertyValue = (ValueBackedPropertyValue) data.getValue();
- try {
- Field field = valueBackedPropertyValue.getClass().getDeclaredField("obj");
- field.setAccessible(true);
- return field;
- } catch (NoSuchFieldException e) {
- throw new RuntimeException(e);
- }
- } else if (data.getValue() instanceof KPropertyBackedPropertyValue) {
- KPropertyBackedPropertyValue kPropertyBackedPropertyValue = (KPropertyBackedPropertyValue) data.getValue();
- try {
- Field field = kPropertyBackedPropertyValue.getClass().getDeclaredField("property");
- field.setAccessible(true);
- KMutableProperty0 property = (KMutableProperty0) field.get(kPropertyBackedPropertyValue);
- return ReflectJvmMapping.getJavaField(property);
- } catch (IllegalAccessException | NoSuchFieldException e) {
- throw new RuntimeException(e);
- }
- } else throw new RuntimeException("Unknown property value type: " + data.getValue().getClass());
- }
-
- private String getName(PropertyAttributesExt ext) {
- try {
- PropertyAttributesExt.class.getDeclaredField("i18nName").setAccessible(true);
- return Platform.getI18nPlatform().format((String) PropertyAttributesExt.class.getDeclaredField("i18nName").get(ext));
- } catch (IllegalAccessException | NoSuchFieldException e) {
- return ext.getName();
- }
- }
-
- private String getCategory(PropertyAttributesExt ext) {
- try {
- PropertyAttributesExt.class.getDeclaredField("i18nCategory").setAccessible(true);
- return Platform.getI18nPlatform().format((String) PropertyAttributesExt.class.getDeclaredField("i18nCategory").get(ext));
- } catch (IllegalAccessException | NoSuchFieldException e) {
- return ext.getCategory();
- }
- }
-
- private String getSubcategory(PropertyAttributesExt ext) {
- try {
- PropertyAttributesExt.class.getDeclaredField("i18nSubcategory").setAccessible(true);
- return Platform.getI18nPlatform().format((String) PropertyAttributesExt.class.getDeclaredField("i18nSubcategory").get(ext));
- } catch (IllegalAccessException | NoSuchFieldException e) {
- return ext.getSubcategory();
- }
- }
-
- @SuppressWarnings("unused")
- public void addDependency(PropertyData property, PropertyData dependency) {
- BasicOption option = optionNames.get(PropertyKt.fullPropertyPath(property.getAttributesExt()));
- if (option != null) {
- option.addDependency(() -> Objects.equals(dependency.getValue().getValue(vigilant), true));
- }
- }
-
- private static class CompatConfigColorElement extends ConfigColorElement {
- private final Field color;
- private Color prevColor = null;
- private OneColor cachedColor = null;
-
- public CompatConfigColorElement(Field color, Vigilant parent, String name, String category, String subcategory, int size) {
- super(null, parent, name, category, subcategory, size, true);
- this.color = color;
- }
-
- @Override
- public Object get() throws IllegalAccessException {
- Color currentColor = (Color) color.get(parent);
- if (cachedColor == null || prevColor != color.get(parent)) {
- cachedColor = new OneColor(currentColor);
- }
- prevColor = currentColor;
- return cachedColor;
- }
-
- @Override
- protected void setColor(OneColor color) {
- if (cachedColor != color) {
- Color newColor = new Color(color.getRGB(), true);
- try {
- this.color.set(parent, newColor);
- } catch (IllegalAccessException ignored) {
- }
- }
- }
- }
-}
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceName.java b/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceName.java
deleted file mode 100644
index 8417ad8..0000000
--- a/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceName.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cc.polyfrost.oneconfig.config.compatibility.vigilance;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-public @interface VigilanceName {
- String name();
-
- String category();
-
- String subcategory();
-}
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilantAccessor.java b/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilantAccessor.java
deleted file mode 100644
index c449bd9..0000000
--- a/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilantAccessor.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package cc.polyfrost.oneconfig.config.compatibility.vigilance;
-
-import gg.essential.vigilance.data.PropertyCollector;
-
-/**
- * Interface for accessing the {@link PropertyCollector} in a Vigilant config.
- * <p>Not recommended for non-internal OneConfig usage, as Systemless will get really angry at us</p>
- */
-public interface VigilantAccessor {
- PropertyCollector getPropertyCollector();
-}
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/migration/VigilanceMigrator.java b/src/main/java/cc/polyfrost/oneconfig/config/migration/VigilanceMigrator.java
index f09d648..aed1919 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/migration/VigilanceMigrator.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/migration/VigilanceMigrator.java
@@ -1,6 +1,6 @@
package cc.polyfrost.oneconfig.config.migration;
-import cc.polyfrost.oneconfig.config.compatibility.vigilance.VigilanceName;
+import cc.polyfrost.oneconfig.internal.config.compatibility.vigilance.VigilanceName;
import java.io.BufferedReader;
import java.io.File;
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/profiles/Profiles.java b/src/main/java/cc/polyfrost/oneconfig/config/profiles/Profiles.java
index 29a9daa..686fb69 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/profiles/Profiles.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/profiles/Profiles.java
@@ -60,7 +60,7 @@ public class Profiles {
public static void loadProfile(String profile) {
ConfigCore.saveAll();
OneConfigConfig.currentProfile = profile;
- //OneConfig.config.save(); todo do we actually need this
+ OneConfigConfig.getInstance().save();
ConfigCore.reInitAll();
}