aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/com/dulkirfabric/config
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/com/dulkirfabric/config')
-rw-r--r--src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt60
-rw-r--r--src/main/kotlin/com/dulkirfabric/config/ListHelper.kt4
-rw-r--r--src/main/kotlin/com/dulkirfabric/config/serializations/KeySerializer.kt22
3 files changed, 51 insertions, 35 deletions
diff --git a/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
index 9aeb190..a34016d 100644
--- a/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
+++ b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
@@ -10,25 +10,27 @@
*
* You may add additional accurate notices of copyright ownership.
*/
-
+@file:UseSerializers(com.dulkirfabric.config.serializations.KeySerializer::class)
package com.dulkirfabric.config
import com.dulkirfabric.DulkirModFabric.mc
import com.dulkirfabric.config.ListHelper.mkKeyField
import com.dulkirfabric.config.ListHelper.mkStringField
-import com.google.gson.Gson
import kotlinx.serialization.Serializable
-import me.shedaniel.cloth.clothconfig.shadowed.blue.endless.jankson.annotation.SerializedName
+import kotlinx.serialization.UseSerializers
+import kotlinx.serialization.decodeFromString
+import kotlinx.serialization.encodeToString
+import kotlinx.serialization.json.Json
import me.shedaniel.clothconfig2.api.ConfigBuilder
import net.minecraft.client.gui.screen.Screen
import net.minecraft.client.util.InputUtil
+import net.minecraft.client.util.InputUtil.UNKNOWN_KEY
import net.minecraft.text.LiteralTextContent
import net.minecraft.text.MutableText
import net.minecraft.text.Text
import net.minecraft.util.Formatting
import net.minecraft.util.Identifier
import java.io.File
-import java.util.*
class DulkirConfig {
@@ -46,15 +48,15 @@ class DulkirConfig {
val entryBuilder = builder.entryBuilder()
val general = builder.getOrCreateCategory(Text.literal("General"))
general.addEntry(
- entryBuilder.startBooleanToggle(Text.literal("Custom Inventory Scale Toggle"), invScaleBool)
+ entryBuilder.startBooleanToggle(Text.literal("Custom Inventory Scale Toggle"), configOptions.invScaleBool)
.setTooltip(Text.literal("WAHOO!"))
- .setSaveConsumer { newValue -> invScaleBool = newValue }
+ .setSaveConsumer { newValue -> configOptions.invScaleBool = newValue }
.build()
)
general.addEntry(
- entryBuilder.startIntSlider(Text.literal("Inventory Scale"), inventoryScale, 1, 5)
+ entryBuilder.startIntSlider(Text.literal("Inventory Scale"), configOptions.inventoryScale, 1, 5)
.setTooltip(Text.literal("Size of GUI whenever you're in an inventory screen"))
- .setSaveConsumer { newValue -> inventoryScale = newValue }
+ .setSaveConsumer { newValue -> configOptions.inventoryScale = newValue }
.build()
)
@@ -62,8 +64,8 @@ class DulkirConfig {
shortcuts.addEntry(
ListHelper.mkConfigList(
Text.literal("Macros"),
- ListHelper.Holder::macros,
- { Macro(InputUtil.UNKNOWN_KEY, "") },
+ configOptions::macrosList,
+ { Macro(UNKNOWN_KEY, "") },
Text.literal("Macro"),
{ value ->
listOf(
@@ -79,11 +81,9 @@ class DulkirConfig {
}
data class ConfigOptions(
- @SerializedName("testOption")
- val invScaleBool: Boolean,
-
- @SerializedName("inventoryScale")
- val inventoryScale: Int
+ var invScaleBool: Boolean = true,
+ var inventoryScale: Int = 1,
+ var macrosList: List<Macro> = listOf(Macro(UNKNOWN_KEY, ""))
)
@Serializable
@@ -96,38 +96,36 @@ class DulkirConfig {
* Object for storing all the actual config values that will be used in doing useful stuff with the config
*/
companion object ConfigVars {
- var invScaleBool: Boolean = true
- var inventoryScale: Int = 1
- var value: List<Pair<Int, Int>> = listOf(Pair(1, 2), Pair(3, 4))
-
+ var configOptions = ConfigOptions()
private fun saveConfig() {
- val gson = Gson()
- val configOptions = ConfigOptions(
- invScaleBool,
- inventoryScale)
- val json = gson.toJson(configOptions)
+ val json = Json {
+ prettyPrint = true
+ ignoreUnknownKeys = true
+ encodeDefaults = true
+ }
val configDirectory = File(mc.runDirectory, "config")
if (!configDirectory.exists()) {
configDirectory.mkdir()
}
val configFile = File(configDirectory, "dulkirConfig.json")
- configFile.writeText(json)
+ configFile.writeText(json.encodeToString(configOptions))
}
fun loadConfig() {
- val gson = Gson()
val configDir = File(mc.runDirectory, "config")
if (!configDir.exists()) return
val configFile = File(configDir, "dulkirConfig.json")
if (configFile.exists()) {
- val json = configFile.readText()
- val configOptions = gson.fromJson(json, ConfigOptions::class.java)
-
- invScaleBool = configOptions.invScaleBool
- inventoryScale = configOptions.inventoryScale
+ val json = Json {
+ prettyPrint = true
+ ignoreUnknownKeys = true
+ encodeDefaults = true
+ }
+ configOptions = json.decodeFromString<ConfigOptions>(configFile.readText())
}
+
}
}
diff --git a/src/main/kotlin/com/dulkirfabric/config/ListHelper.kt b/src/main/kotlin/com/dulkirfabric/config/ListHelper.kt
index 3476bcc..8f50943 100644
--- a/src/main/kotlin/com/dulkirfabric/config/ListHelper.kt
+++ b/src/main/kotlin/com/dulkirfabric/config/ListHelper.kt
@@ -35,10 +35,6 @@ object ListHelper {
)
}
- object Holder {
- var macros = listOf(DulkirConfig.Macro(InputUtil.UNKNOWN_KEY, "Hello World"))
- }
-
fun ConfigEntryBuilder.mkStringField(text: Text, prop: KMutableProperty0<String>) = startStrField(text, prop.get())
.setSaveConsumer { prop.set(it) }
.setDefaultValue("")
diff --git a/src/main/kotlin/com/dulkirfabric/config/serializations/KeySerializer.kt b/src/main/kotlin/com/dulkirfabric/config/serializations/KeySerializer.kt
new file mode 100644
index 0000000..a737bf0
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/config/serializations/KeySerializer.kt
@@ -0,0 +1,22 @@
+package com.dulkirfabric.config.serializations
+
+import kotlinx.serialization.KSerializer
+import kotlinx.serialization.descriptors.PrimitiveKind
+import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
+import kotlinx.serialization.descriptors.SerialDescriptor
+import kotlinx.serialization.encoding.Decoder
+import kotlinx.serialization.encoding.Encoder
+import net.minecraft.client.util.InputUtil
+import org.lwjgl.glfw.GLFW
+
+object KeySerializer: KSerializer<InputUtil.Key> {
+ override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("InputUtil.Key", PrimitiveKind.INT)
+
+ override fun deserialize(decoder: Decoder): InputUtil.Key {
+ return InputUtil.fromKeyCode(GLFW.GLFW_KEY_UNKNOWN, decoder.decodeInt())
+ }
+
+ override fun serialize(encoder: Encoder, value: InputUtil.Key) {
+ encoder.encodeInt(value.code)
+ }
+} \ No newline at end of file