Ещё больше рефакторинга
This commit is contained in:
parent
63d5afdfcd
commit
7f28e8be51
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
}
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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()
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user