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

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::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)

View File

@ -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)

View File

@ -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)

View File

@ -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()
}

View File

@ -419,7 +419,7 @@ class KConcreteTypeAdapter<T : Any> private constructor(
*
* Список неизменяем (создаётся объект [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())
}
@ -440,7 +440,7 @@ class KConcreteTypeAdapter<T : Any> private constructor(
*
* Таблица неизменяема (создаётся объект [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)
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 ru.dbotthepony.kstarbound.Starbound
fun <T : Any> TypeAdapter<T>.asList(): TypeAdapter<List<T>> {
return ListAdapter(this)
fun <T : Any> TypeAdapter<T>.asList(valueTransformer: (T) -> T = { it }): TypeAdapter<List<T>> {
return ListAdapter(this, valueTransformer = valueTransformer)
}
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>) {
out.beginArray()

View File

@ -7,12 +7,12 @@ import com.google.gson.stream.JsonToken
import com.google.gson.stream.JsonWriter
import ru.dbotthepony.kstarbound.Starbound
fun <T> TypeAdapter<T>.asJsonObject(): TypeAdapter<Map<String, T>> {
return String2ObjectAdapter(this)
fun <T> TypeAdapter<T>.asJsonObject(valueTransformer: (T) -> T = { it }): TypeAdapter<Map<String, T>> {
return String2ObjectAdapter(this, valueTransformer = valueTransformer)
}
class String2ObjectAdapter<T>(val adapter: TypeAdapter<T>) : TypeAdapter<Map<String, T>>() {
constructor(type: Class<T>) : this(LazyTypeProvider(type))
class String2ObjectAdapter<T>(val adapter: TypeAdapter<T>, val valueTransformer: (T) -> T = { it }) : TypeAdapter<Map<String, T>>() {
constructor(type: Class<T>, valueTransformer: (T) -> T = { it }) : this(LazyTypeProvider(type), valueTransformer = valueTransformer)
override fun write(out: JsonWriter, value: Map<String, T>) {
out.beginObject()
@ -31,7 +31,7 @@ class String2ObjectAdapter<T>(val adapter: TypeAdapter<T>) : TypeAdapter<Map<Str
reader.beginObject()
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()