Снова тестим подгрузку брони
This commit is contained in:
parent
e4a2f66b84
commit
4e09fad480
@ -66,7 +66,7 @@ object Starbound {
|
||||
if (input[0] == '/')
|
||||
return input
|
||||
|
||||
return "$readingFolder/$input"
|
||||
return assetStringInterner.intern("$readingFolder/$input")
|
||||
}
|
||||
|
||||
fun readingFolderTransformerNullable(input: String?): String? {
|
||||
@ -477,8 +477,7 @@ object Starbound {
|
||||
}
|
||||
|
||||
private fun loadItemDefinitions(callback: (String) -> Unit) {
|
||||
//val files = listOf(".item", ".currency", ".head", ".chest", ".legs")
|
||||
val files = listOf(".item", ".currency")
|
||||
val files = listOf(".item", ".currency", ".head", ".chest", ".legs")
|
||||
|
||||
for (fs in fileSystems) {
|
||||
for (listedFile in fs.explore().filter { it.isFile }.filter { f -> files.any { f.name.endsWith(it) } }) {
|
||||
|
@ -1,10 +1,15 @@
|
||||
package ru.dbotthepony.kstarbound.defs.item
|
||||
|
||||
import com.google.gson.GsonBuilder
|
||||
import com.google.gson.TypeAdapter
|
||||
import com.google.gson.stream.JsonReader
|
||||
import com.google.gson.stream.JsonToken
|
||||
import com.google.gson.stream.JsonWriter
|
||||
import ru.dbotthepony.kstarbound.Starbound
|
||||
import ru.dbotthepony.kstarbound.io.json.KConcreteTypeAdapter
|
||||
import ru.dbotthepony.kstarbound.io.json.asJsonObject
|
||||
import ru.dbotthepony.kstarbound.io.json.asList
|
||||
import ru.dbotthepony.kstarbound.io.json.ifString
|
||||
import ru.dbotthepony.kstarbound.registerTypeAdapter
|
||||
import ru.dbotthepony.kvector.vector.ndouble.Vector2d
|
||||
|
||||
@ -244,14 +249,15 @@ data class ItemDefinition(
|
||||
|
||||
data class ArmorFrames(
|
||||
val body: String,
|
||||
val backSleeve: String,
|
||||
val frontSleeve: String,
|
||||
val backSleeve: String?,
|
||||
val frontSleeve: String?,
|
||||
)
|
||||
|
||||
data class StatusEffect(
|
||||
val levelFunction: String,
|
||||
val stat: String,
|
||||
val baseMultiplier: Double,
|
||||
val baseMultiplier: Double = 1.0,
|
||||
val amount: Double = 0.0,
|
||||
)
|
||||
|
||||
companion object {
|
||||
@ -319,14 +325,16 @@ data class ItemDefinition(
|
||||
|
||||
val ARMOR_FRAMES_ADAPTER = KConcreteTypeAdapter.Builder(ArmorFrames::class)
|
||||
.auto(ArmorFrames::body, transformer = Starbound::readingFolderTransformer)
|
||||
.auto(ArmorFrames::backSleeve, transformer = Starbound::readingFolderTransformer)
|
||||
.auto(ArmorFrames::frontSleeve, transformer = Starbound::readingFolderTransformer)
|
||||
.auto(ArmorFrames::backSleeve, transformer = Starbound::readingFolderTransformerNullable)
|
||||
.auto(ArmorFrames::frontSleeve, transformer = Starbound::readingFolderTransformerNullable)
|
||||
.build()
|
||||
.ifString { ArmorFrames(Starbound.readingFolderTransformer(it), null, null) }
|
||||
|
||||
val STATUS_EFFECT_ADAPTER = KConcreteTypeAdapter.Builder(StatusEffect::class)
|
||||
.auto(StatusEffect::levelFunction)
|
||||
.auto(StatusEffect::stat)
|
||||
.auto(StatusEffect::baseMultiplier)
|
||||
.auto(StatusEffect::amount)
|
||||
.build()
|
||||
|
||||
fun registerGson(gsonBuilder: GsonBuilder) {
|
||||
|
@ -2,6 +2,7 @@ package ru.dbotthepony.kstarbound.io.json
|
||||
|
||||
import com.google.gson.TypeAdapter
|
||||
import com.google.gson.stream.JsonReader
|
||||
import com.google.gson.stream.JsonToken
|
||||
import com.google.gson.stream.JsonWriter
|
||||
|
||||
fun <T> TypeAdapter<T>.transformRead(transformer: (T) -> T): TypeAdapter<T> {
|
||||
@ -39,3 +40,19 @@ fun <T> TypeAdapter<T>.transform(transformRead: (T) -> T, transformWrite: (T) ->
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun <T> TypeAdapter<T>.ifString(reader: (String) -> T): TypeAdapter<T> {
|
||||
return object : TypeAdapter<T>() {
|
||||
override fun write(out: JsonWriter, value: T) {
|
||||
return this@ifString.write(out, value)
|
||||
}
|
||||
|
||||
override fun read(`in`: JsonReader): T {
|
||||
if (`in`.peek() == JsonToken.STRING) {
|
||||
return reader(`in`.nextString())
|
||||
}
|
||||
|
||||
return this@ifString.read(`in`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -360,7 +360,7 @@ class KConcreteTypeAdapter<T : Any> private constructor(
|
||||
private val types = ArrayList<PackedProperty<T, *>>()
|
||||
|
||||
/**
|
||||
* Принимает ли класс *последним* аргументом JSON объект
|
||||
* Принимает ли класс *последним* аргументом JSON структуру
|
||||
*
|
||||
* На самом деле, JSON "заворачивается" в [ImmutableMap], или [ImmutableList] если указано [asList]/[inputAsList]
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user