From 428bb5d412b66cda37d6f2199e81d0cb81a8bb96 Mon Sep 17 00:00:00 2001
From: DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>
Date: Sun, 20 Feb 2022 15:50:05 +0100
Subject: profile system
---
.../oneconfig/config/interfaces/Config.java | 61 +++++++++++++---------
.../config/interfaces/OneConfigTypeAdapter.java | 2 +-
2 files changed, 37 insertions(+), 26 deletions(-)
(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
index f592152..73696a5 100644
--- a/src/main/java/io/polyfrost/oneconfig/config/interfaces/Config.java
+++ b/src/main/java/io/polyfrost/oneconfig/config/interfaces/Config.java
@@ -4,6 +4,7 @@ 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.config.profiles.Profiles;
import io.polyfrost.oneconfig.gui.elements.config.*;
import java.io.*;
@@ -11,20 +12,26 @@ import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Map;
+import java.util.Optional;
public class Config {
- private final File configFile;
- private final Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).setPrettyPrinting()
+ protected final String configFile;
+ protected final 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) {
+ public Config(ModData modData, String configFile) {
this.configFile = configFile;
- if (configFile.exists())
+ init(modData);
+ }
+
+ public void init(ModData modData) {
+ if (Profiles.getProfileFile(configFile).exists())
load();
else
save();
@@ -36,7 +43,7 @@ public class Config {
* Save current config to file
*/
public void save() {
- try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(configFile), StandardCharsets.UTF_8))) {
+ try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(Profiles.getProfileFile(configFile)), StandardCharsets.UTF_8))) {
writer.write(gson.toJson(this.getClass()));
} catch (IOException e) {
e.printStackTrace();
@@ -47,7 +54,7 @@ public class Config {
* Load file and overwrite current values
*/
public void load() {
- try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(configFile), StandardCharsets.UTF_8))) {
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(Profiles.getProfileFile(configFile)), StandardCharsets.UTF_8))) {
deserializePart(new JsonParser().parse(reader).getAsJsonObject(), this.getClass());
} catch (IOException e) {
e.printStackTrace();
@@ -60,7 +67,7 @@ public class Config {
* @param clazz target class
* @return list of options
*/
- private ArrayList