mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-14 20:44:05 +09:00
69 lines
2.0 KiB
Kotlin
69 lines
2.0 KiB
Kotlin
package net.torvald.terrarum.serialise
|
|
|
|
import com.badlogic.gdx.utils.Json
|
|
import com.badlogic.gdx.utils.JsonValue
|
|
import com.badlogic.gdx.utils.JsonWriter
|
|
import net.torvald.terrarum.App
|
|
import net.torvald.terrarum.KVHashMap
|
|
import net.torvald.terrarum.utils.JsonFetcher
|
|
|
|
/**
|
|
* Created by minjaesong on 2021-09-19.
|
|
*/
|
|
object WriteConfig {
|
|
|
|
private val jsoner = Json(JsonWriter.OutputType.json)
|
|
|
|
init {
|
|
jsoner.ignoreUnknownFields = true
|
|
jsoner.setUsePrototypes(false)
|
|
jsoner.setIgnoreDeprecated(false)
|
|
|
|
// KVHashMap
|
|
jsoner.setSerializer(KVHashMap::class.java, object : Json.Serializer<KVHashMap> {
|
|
override fun write(json: Json, obj: KVHashMap, knownType: Class<*>?) {
|
|
json.writeObjectStart()
|
|
obj.hashMap.toSortedMap().forEach { (k, v) ->
|
|
json.writeValue(k, v)
|
|
}
|
|
json.writeObjectEnd()
|
|
}
|
|
|
|
override fun read(json: Json, jsonData: JsonValue, type: Class<*>?): KVHashMap {
|
|
val map = KVHashMap()
|
|
JsonFetcher.forEach(jsonData) { key, obj ->
|
|
map[key] = json.readValue(null, obj)
|
|
}
|
|
return map
|
|
}
|
|
})
|
|
|
|
}
|
|
|
|
/*fun getJson(): String {
|
|
val sb = StringBuilder()
|
|
|
|
App.gameConfig.hashMap.toSortedMap().forEach { (k, v) ->
|
|
sb.append("$k:")
|
|
|
|
when (v) {
|
|
is DoubleArray -> { sb.append("[${v.joinToString(",")}]") }
|
|
is IntArray -> { sb.append("[${v.joinToString(",")}]") }
|
|
is Array<*> -> { sb.append("[${v.joinToString(",")}]") }
|
|
else -> { sb.append("$v") }
|
|
}
|
|
|
|
sb.append("\n")
|
|
}
|
|
|
|
return "{\n$sb}"
|
|
}*/
|
|
|
|
operator fun invoke() {
|
|
val writer = java.io.FileWriter(App.configDir, false)
|
|
//writer.write(getJson())
|
|
writer.write(jsoner.prettyPrint(App.gameConfig))
|
|
writer.close()
|
|
}
|
|
|
|
} |