From 3857800292a7cc078ee05c5487b11a256682bef1 Mon Sep 17 00:00:00 2001
From: nextdaydelivery <12willettsh@gmail.com>
Date: Sun, 13 Feb 2022 10:46:44 +0000
Subject: remake theme stuff + move packages around
---
.../oneconfig/config/interfaces/Config.java | 126 +++++++++++++++++++++
.../config/interfaces/OneConfigTypeAdapter.java | 51 +++++++++
.../interfaces/OneConfigTypeAdapterFactory.java | 30 +++++
.../oneconfig/config/interfaces/Option.java | 76 +++++++++++++
4 files changed, 283 insertions(+)
create mode 100644 src/main/java/io/polyfrost/oneconfig/config/interfaces/Config.java
create mode 100644 src/main/java/io/polyfrost/oneconfig/config/interfaces/OneConfigTypeAdapter.java
create mode 100644 src/main/java/io/polyfrost/oneconfig/config/interfaces/OneConfigTypeAdapterFactory.java
create mode 100644 src/main/java/io/polyfrost/oneconfig/config/interfaces/Option.java
(limited to 'src/main/java/io/polyfrost/oneconfig/config/interfaces')
diff --git a/src/main/java/io/polyfrost/oneconfig/config/interfaces/Config.java b/src/main/java/io/polyfrost/oneconfig/config/interfaces/Config.java
new file mode 100644
index 0000000..ce73f0c
--- /dev/null
+++ b/src/main/java/io/polyfrost/oneconfig/config/interfaces/Config.java
@@ -0,0 +1,126 @@
+package io.polyfrost.oneconfig.config.interfaces;
+
+import com.google.gson.*;
+import io.polyfrost.oneconfig.config.annotations.*;
+import io.polyfrost.oneconfig.config.core.ConfigCore;
+import io.polyfrost.oneconfig.config.data.ModData;
+import io.polyfrost.oneconfig.gui.elements.config.*;
+
+import java.io.*;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Map;
+
+public class Config {
+ private final File configFile;
+
+ Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).setPrettyPrinting()
+ .registerTypeAdapterFactory(OneConfigTypeAdapterFactory.getStaticTypeAdapterFactory()).create();
+
+ /**
+ * @param modData information about the mod
+ * @param configFile file where config is stored
+ */
+ public Config(ModData modData, File configFile) {
+ this.configFile = configFile;
+ if (configFile.exists())
+ load();
+ else
+ save();
+ modData.config = this;
+ ConfigCore.settings.put(modData, generateOptionList(this.getClass()));
+ }
+
+ /**
+ * Save current config to file
+ */
+ public void save() {
+ try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(configFile), StandardCharsets.UTF_8))) {
+ writer.write(gson.toJson(this.getClass()));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Load file and overwrite current values
+ */
+ public void load() {
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(configFile), StandardCharsets.UTF_8))) {
+ deserializePart(new JsonParser().parse(reader).getAsJsonObject(), this.getClass());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Generate the option list for internal use only
+ *
+ * @param clazz target class
+ * @return list of options
+ */
+ private ArrayList