diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/item/ItemDefinition.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/item/ItemDefinition.kt index 41ccd027..ef7c1a8f 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/item/ItemDefinition.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/item/ItemDefinition.kt @@ -264,13 +264,13 @@ data class ItemDefinition( .auto(ItemDefinition::description) .auto(ItemDefinition::shortdescription) - .list(ItemDefinition::itemTags) - .list(ItemDefinition::learnBlueprintsOnPickup) + .autoList(ItemDefinition::itemTags) + .autoList(ItemDefinition::learnBlueprintsOnPickup) .auto(ItemDefinition::maxStack) .auto(ItemDefinition::eventCategory) .auto(ItemDefinition::consumeOnPickup) - .list(ItemDefinition::pickupQuestTemplates) + .autoList(ItemDefinition::pickupQuestTemplates) .auto(ItemDefinition::race) .auto(ItemDefinition::displayImage, transformer = Starbound::readingFolderTransformerNullable) @@ -283,23 +283,23 @@ data class ItemDefinition( .auto(ItemDefinition::completeFossilObject) .auto(ItemDefinition::completeSetDescriptions) - .list(ItemDefinition::radioMessagesOnPickup) + .autoList(ItemDefinition::radioMessagesOnPickup) .auto(ItemDefinition::fuelAmount) - .list(ItemDefinition::pickupSoundsSmall) - .list(ItemDefinition::pickupSoundsMedium) - .list(ItemDefinition::pickupSoundsLarge) + .autoList(ItemDefinition::pickupSoundsSmall) + .autoList(ItemDefinition::pickupSoundsMedium) + .autoList(ItemDefinition::pickupSoundsLarge) .auto(ItemDefinition::smallStackLimit) .auto(ItemDefinition::mediumStackLimit) .auto(ItemDefinition::currency) .auto(ItemDefinition::value) - .list(ItemDefinition::scripts, transformer = Starbound::readingFolderListTransformer) - .list(ItemDefinition::animationScripts, transformer = Starbound::readingFolderListTransformer) + .autoList(ItemDefinition::scripts, transformer = Starbound::readingFolderListTransformer) + .autoList(ItemDefinition::animationScripts, transformer = Starbound::readingFolderListTransformer) .auto(ItemDefinition::tooltipKind) .auto(ItemDefinition::level) - .list(ItemDefinition::leveledStatusEffects) + .autoList(ItemDefinition::leveledStatusEffects) .add(ItemDefinition::colorOptions, Starbound.nonnullStringTypeAdapter.asJsonObject().asList()) .auto(ItemDefinition::maleFrames) .auto(ItemDefinition::femaleFrames) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/liquid/LiquidDefinition.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/liquid/LiquidDefinition.kt index 476f7043..f6e1cad2 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/liquid/LiquidDefinition.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/liquid/LiquidDefinition.kt @@ -32,8 +32,8 @@ data class LiquidDefinition( .auto(LiquidDefinition::tickDelta) .auto(LiquidDefinition::color) .auto(LiquidDefinition::itemDrop) - .list(LiquidDefinition::statusEffects) - .list(LiquidDefinition::interactions) + .autoList(LiquidDefinition::statusEffects) + .autoList(LiquidDefinition::interactions) .auto(LiquidDefinition::texture) .auto(LiquidDefinition::bottomLightMix) .auto(LiquidDefinition::textureMovementFactor) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/MaterialModifier.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/MaterialModifier.kt index 62788996..a0b4b1f8 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/MaterialModifier.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/MaterialModifier.kt @@ -31,7 +31,7 @@ data class MaterialModifier( .auto(MaterialModifier::harvestLevel) .auto(MaterialModifier::breaksWithTile) .auto(MaterialModifier::grass) - .list(MaterialModifier::miningSounds) + .autoList(MaterialModifier::miningSounds) .auto(MaterialModifier::miningParticle) .add(MaterialModifier::renderTemplate, RenderTemplate.CACHE) .auto(MaterialModifier::renderParameters) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/RenderTemplate.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/RenderTemplate.kt index ab8f27e2..3c8df3ef 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/RenderTemplate.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/RenderTemplate.kt @@ -118,7 +118,7 @@ data class RenderRuleList( companion object { val ADAPTER = KConcreteTypeAdapter.Builder(RenderRuleList::class) - .list(RenderRuleList::entries) + .autoList(RenderRuleList::entries) .auto(RenderRuleList::join) .build() } @@ -207,10 +207,10 @@ data class RenderMatch( companion object { val ADAPTER = KConcreteTypeAdapter.Builder(RenderMatch::class) - .list(RenderMatch::pieces) - .list(RenderMatch::matchAllPoints) - .list(RenderMatch::matchAnyPoints) - .list(RenderMatch::subMatches) + .autoList(RenderMatch::pieces) + .autoList(RenderMatch::matchAllPoints) + .autoList(RenderMatch::matchAnyPoints) + .autoList(RenderMatch::subMatches) .auto(RenderMatch::haltOnMatch) .auto(RenderMatch::haltOnSubMatch) .build() @@ -242,7 +242,7 @@ data class RenderMatchList( companion object { val ADAPTER = KConcreteTypeAdapter.Builder(RenderMatchList::class) .auto(RenderMatchList::name) - .list(RenderMatchList::list) + .autoList(RenderMatchList::list) .inputAsList() .build() } diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/KConcreteTypeAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/KConcreteTypeAdapter.kt index 60a671cd..69c30fac 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/KConcreteTypeAdapter.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/KConcreteTypeAdapter.kt @@ -419,7 +419,7 @@ class KConcreteTypeAdapter private constructor( * * Список неизменяем (создаётся объект [ImmutableList]) */ - inline fun list(field: KProperty1?>, noinline transformer: (List?) -> List? = { it }): Builder { + inline fun autoList(field: KProperty1?>, noinline transformer: (List?) -> List? = { it }): Builder { return add(field, ListAdapter(V::class.java).nullSafe()) } @@ -440,7 +440,7 @@ class KConcreteTypeAdapter private constructor( * * Таблица неизменяема (создаётся объект [ImmutableMap]) */ - inline fun map(field: KProperty1>): Builder { + inline fun autoMap(field: KProperty1>): Builder { if (K::class == String::class) return this.mapAsObject(field as KProperty1?>, V::class.java) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/ListAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/ListAdapter.kt index 30fc3c13..090ed74a 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/ListAdapter.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/ListAdapter.kt @@ -8,12 +8,12 @@ import com.google.gson.stream.JsonToken import com.google.gson.stream.JsonWriter import ru.dbotthepony.kstarbound.Starbound -fun TypeAdapter.asList(): TypeAdapter> { - return ListAdapter(this) +fun TypeAdapter.asList(valueTransformer: (T) -> T = { it }): TypeAdapter> { + return ListAdapter(this, valueTransformer = valueTransformer) } class ListAdapter(val elementAdapter: TypeAdapter, val valueTransformer: (T) -> T = { it }) : TypeAdapter>() { - constructor(type: Class) : this(LazyTypeProvider(type)) + constructor(type: Class, valueTransformer: (T) -> T = { it }) : this(LazyTypeProvider(type), valueTransformer = valueTransformer) override fun write(out: JsonWriter, value: List) { out.beginArray() diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/String2ObjectAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/String2ObjectAdapter.kt index 1a25b41b..def7f538 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/String2ObjectAdapter.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/String2ObjectAdapter.kt @@ -7,12 +7,12 @@ import com.google.gson.stream.JsonToken import com.google.gson.stream.JsonWriter import ru.dbotthepony.kstarbound.Starbound -fun TypeAdapter.asJsonObject(): TypeAdapter> { - return String2ObjectAdapter(this) +fun TypeAdapter.asJsonObject(valueTransformer: (T) -> T = { it }): TypeAdapter> { + return String2ObjectAdapter(this, valueTransformer = valueTransformer) } -class String2ObjectAdapter(val adapter: TypeAdapter) : TypeAdapter>() { - constructor(type: Class) : this(LazyTypeProvider(type)) +class String2ObjectAdapter(val adapter: TypeAdapter, val valueTransformer: (T) -> T = { it }) : TypeAdapter>() { + constructor(type: Class, valueTransformer: (T) -> T = { it }) : this(LazyTypeProvider(type), valueTransformer = valueTransformer) override fun write(out: JsonWriter, value: Map) { out.beginObject() @@ -31,7 +31,7 @@ class String2ObjectAdapter(val adapter: TypeAdapter) : TypeAdapter