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