Ещё больше рефакторинга

This commit is contained in:
DBotThePony 2022-12-30 17:31:57 +07:00
parent 63d5afdfcd
commit 7f28e8be51
Signed by: DBot
GPG Key ID: DCC23B5715498507
7 changed files with 29 additions and 29 deletions

View File

@ -264,13 +264,13 @@ data class ItemDefinition(
.auto(ItemDefinition::description) .auto(ItemDefinition::description)
.auto(ItemDefinition::shortdescription) .auto(ItemDefinition::shortdescription)
.list(ItemDefinition::itemTags) .autoList(ItemDefinition::itemTags)
.list(ItemDefinition::learnBlueprintsOnPickup) .autoList(ItemDefinition::learnBlueprintsOnPickup)
.auto(ItemDefinition::maxStack) .auto(ItemDefinition::maxStack)
.auto(ItemDefinition::eventCategory) .auto(ItemDefinition::eventCategory)
.auto(ItemDefinition::consumeOnPickup) .auto(ItemDefinition::consumeOnPickup)
.list(ItemDefinition::pickupQuestTemplates) .autoList(ItemDefinition::pickupQuestTemplates)
.auto(ItemDefinition::race) .auto(ItemDefinition::race)
.auto(ItemDefinition::displayImage, transformer = Starbound::readingFolderTransformerNullable) .auto(ItemDefinition::displayImage, transformer = Starbound::readingFolderTransformerNullable)
@ -283,23 +283,23 @@ data class ItemDefinition(
.auto(ItemDefinition::completeFossilObject) .auto(ItemDefinition::completeFossilObject)
.auto(ItemDefinition::completeSetDescriptions) .auto(ItemDefinition::completeSetDescriptions)
.list(ItemDefinition::radioMessagesOnPickup) .autoList(ItemDefinition::radioMessagesOnPickup)
.auto(ItemDefinition::fuelAmount) .auto(ItemDefinition::fuelAmount)
.list(ItemDefinition::pickupSoundsSmall) .autoList(ItemDefinition::pickupSoundsSmall)
.list(ItemDefinition::pickupSoundsMedium) .autoList(ItemDefinition::pickupSoundsMedium)
.list(ItemDefinition::pickupSoundsLarge) .autoList(ItemDefinition::pickupSoundsLarge)
.auto(ItemDefinition::smallStackLimit) .auto(ItemDefinition::smallStackLimit)
.auto(ItemDefinition::mediumStackLimit) .auto(ItemDefinition::mediumStackLimit)
.auto(ItemDefinition::currency) .auto(ItemDefinition::currency)
.auto(ItemDefinition::value) .auto(ItemDefinition::value)
.list(ItemDefinition::scripts, transformer = Starbound::readingFolderListTransformer) .autoList(ItemDefinition::scripts, transformer = Starbound::readingFolderListTransformer)
.list(ItemDefinition::animationScripts, transformer = Starbound::readingFolderListTransformer) .autoList(ItemDefinition::animationScripts, transformer = Starbound::readingFolderListTransformer)
.auto(ItemDefinition::tooltipKind) .auto(ItemDefinition::tooltipKind)
.auto(ItemDefinition::level) .auto(ItemDefinition::level)
.list(ItemDefinition::leveledStatusEffects) .autoList(ItemDefinition::leveledStatusEffects)
.add(ItemDefinition::colorOptions, Starbound.nonnullStringTypeAdapter.asJsonObject().asList()) .add(ItemDefinition::colorOptions, Starbound.nonnullStringTypeAdapter.asJsonObject().asList())
.auto(ItemDefinition::maleFrames) .auto(ItemDefinition::maleFrames)
.auto(ItemDefinition::femaleFrames) .auto(ItemDefinition::femaleFrames)

View File

@ -32,8 +32,8 @@ data class LiquidDefinition(
.auto(LiquidDefinition::tickDelta) .auto(LiquidDefinition::tickDelta)
.auto(LiquidDefinition::color) .auto(LiquidDefinition::color)
.auto(LiquidDefinition::itemDrop) .auto(LiquidDefinition::itemDrop)
.list(LiquidDefinition::statusEffects) .autoList(LiquidDefinition::statusEffects)
.list(LiquidDefinition::interactions) .autoList(LiquidDefinition::interactions)
.auto(LiquidDefinition::texture) .auto(LiquidDefinition::texture)
.auto(LiquidDefinition::bottomLightMix) .auto(LiquidDefinition::bottomLightMix)
.auto(LiquidDefinition::textureMovementFactor) .auto(LiquidDefinition::textureMovementFactor)

View File

@ -31,7 +31,7 @@ data class MaterialModifier(
.auto(MaterialModifier::harvestLevel) .auto(MaterialModifier::harvestLevel)
.auto(MaterialModifier::breaksWithTile) .auto(MaterialModifier::breaksWithTile)
.auto(MaterialModifier::grass) .auto(MaterialModifier::grass)
.list(MaterialModifier::miningSounds) .autoList(MaterialModifier::miningSounds)
.auto(MaterialModifier::miningParticle) .auto(MaterialModifier::miningParticle)
.add(MaterialModifier::renderTemplate, RenderTemplate.CACHE) .add(MaterialModifier::renderTemplate, RenderTemplate.CACHE)
.auto(MaterialModifier::renderParameters) .auto(MaterialModifier::renderParameters)

View File

@ -118,7 +118,7 @@ data class RenderRuleList(
companion object { companion object {
val ADAPTER = KConcreteTypeAdapter.Builder(RenderRuleList::class) val ADAPTER = KConcreteTypeAdapter.Builder(RenderRuleList::class)
.list(RenderRuleList::entries) .autoList(RenderRuleList::entries)
.auto(RenderRuleList::join) .auto(RenderRuleList::join)
.build() .build()
} }
@ -207,10 +207,10 @@ data class RenderMatch(
companion object { companion object {
val ADAPTER = KConcreteTypeAdapter.Builder(RenderMatch::class) val ADAPTER = KConcreteTypeAdapter.Builder(RenderMatch::class)
.list(RenderMatch::pieces) .autoList(RenderMatch::pieces)
.list(RenderMatch::matchAllPoints) .autoList(RenderMatch::matchAllPoints)
.list(RenderMatch::matchAnyPoints) .autoList(RenderMatch::matchAnyPoints)
.list(RenderMatch::subMatches) .autoList(RenderMatch::subMatches)
.auto(RenderMatch::haltOnMatch) .auto(RenderMatch::haltOnMatch)
.auto(RenderMatch::haltOnSubMatch) .auto(RenderMatch::haltOnSubMatch)
.build() .build()
@ -242,7 +242,7 @@ data class RenderMatchList(
companion object { companion object {
val ADAPTER = KConcreteTypeAdapter.Builder(RenderMatchList::class) val ADAPTER = KConcreteTypeAdapter.Builder(RenderMatchList::class)
.auto(RenderMatchList::name) .auto(RenderMatchList::name)
.list(RenderMatchList::list) .autoList(RenderMatchList::list)
.inputAsList() .inputAsList()
.build() .build()
} }

View File

@ -419,7 +419,7 @@ class KConcreteTypeAdapter<T : Any> private constructor(
* *
* Список неизменяем (создаётся объект [ImmutableList]) * Список неизменяем (создаётся объект [ImmutableList])
*/ */
inline fun <reified V : Any> list(field: KProperty1<T, List<V>?>, noinline transformer: (List<V>?) -> List<V>? = { it }): Builder<T> { inline fun <reified V : Any> autoList(field: KProperty1<T, List<V>?>, noinline transformer: (List<V>?) -> List<V>? = { it }): Builder<T> {
return add(field, ListAdapter(V::class.java).nullSafe()) return add(field, ListAdapter(V::class.java).nullSafe())
} }
@ -440,7 +440,7 @@ class KConcreteTypeAdapter<T : Any> private constructor(
* *
* Таблица неизменяема (создаётся объект [ImmutableMap]) * Таблица неизменяема (создаётся объект [ImmutableMap])
*/ */
inline fun <reified K, reified V> map(field: KProperty1<T, Map<K, V>>): Builder<T> { inline fun <reified K, reified V> autoMap(field: KProperty1<T, Map<K, V>>): Builder<T> {
if (K::class == String::class) if (K::class == String::class)
return this.mapAsObject(field as KProperty1<T, Map<String, V>?>, V::class.java) return this.mapAsObject(field as KProperty1<T, Map<String, V>?>, V::class.java)

View File

@ -8,12 +8,12 @@ import com.google.gson.stream.JsonToken
import com.google.gson.stream.JsonWriter import com.google.gson.stream.JsonWriter
import ru.dbotthepony.kstarbound.Starbound import ru.dbotthepony.kstarbound.Starbound
fun <T : Any> TypeAdapter<T>.asList(): TypeAdapter<List<T>> { fun <T : Any> TypeAdapter<T>.asList(valueTransformer: (T) -> T = { it }): TypeAdapter<List<T>> {
return ListAdapter(this) return ListAdapter(this, valueTransformer = valueTransformer)
} }
class ListAdapter<T : Any>(val elementAdapter: TypeAdapter<T>, val valueTransformer: (T) -> T = { it }) : TypeAdapter<List<T>>() { class ListAdapter<T : Any>(val elementAdapter: TypeAdapter<T>, val valueTransformer: (T) -> T = { it }) : TypeAdapter<List<T>>() {
constructor(type: Class<T>) : this(LazyTypeProvider(type)) constructor(type: Class<T>, valueTransformer: (T) -> T = { it }) : this(LazyTypeProvider(type), valueTransformer = valueTransformer)
override fun write(out: JsonWriter, value: List<T>) { override fun write(out: JsonWriter, value: List<T>) {
out.beginArray() out.beginArray()

View File

@ -7,12 +7,12 @@ import com.google.gson.stream.JsonToken
import com.google.gson.stream.JsonWriter import com.google.gson.stream.JsonWriter
import ru.dbotthepony.kstarbound.Starbound import ru.dbotthepony.kstarbound.Starbound
fun <T> TypeAdapter<T>.asJsonObject(): TypeAdapter<Map<String, T>> { fun <T> TypeAdapter<T>.asJsonObject(valueTransformer: (T) -> T = { it }): TypeAdapter<Map<String, T>> {
return String2ObjectAdapter(this) return String2ObjectAdapter(this, valueTransformer = valueTransformer)
} }
class String2ObjectAdapter<T>(val adapter: TypeAdapter<T>) : TypeAdapter<Map<String, T>>() { class String2ObjectAdapter<T>(val adapter: TypeAdapter<T>, val valueTransformer: (T) -> T = { it }) : TypeAdapter<Map<String, T>>() {
constructor(type: Class<T>) : this(LazyTypeProvider(type)) constructor(type: Class<T>, valueTransformer: (T) -> T = { it }) : this(LazyTypeProvider(type), valueTransformer = valueTransformer)
override fun write(out: JsonWriter, value: Map<String, T>) { override fun write(out: JsonWriter, value: Map<String, T>) {
out.beginObject() out.beginObject()
@ -31,7 +31,7 @@ class String2ObjectAdapter<T>(val adapter: TypeAdapter<T>) : TypeAdapter<Map<Str
reader.beginObject() reader.beginObject()
while (reader.peek() != JsonToken.END_OBJECT) { while (reader.peek() != JsonToken.END_OBJECT) {
builder.put(Starbound.assetStringInterner.intern(reader.nextName()), adapter.read(reader)) builder.put(Starbound.assetStringInterner.intern(reader.nextName()), valueTransformer(adapter.read(reader)))
} }
reader.endObject() reader.endObject()