Рефакторинг имён

This commit is contained in:
DBotThePony 2022-12-30 16:33:51 +07:00
parent ef9e22b51c
commit 35151c8187
Signed by: DBot
GPG Key ID: DCC23B5715498507
7 changed files with 79 additions and 103 deletions

View File

@ -1,6 +1,5 @@
package ru.dbotthepony.kstarbound.defs.item
import com.google.common.collect.ImmutableList
import com.google.gson.GsonBuilder
import ru.dbotthepony.kstarbound.Starbound
import ru.dbotthepony.kstarbound.io.KConcreteTypeAdapter
@ -255,78 +254,78 @@ data class ItemDefinition(
companion object {
val ADAPTER = KConcreteTypeAdapter.Builder(ItemDefinition::class)
.plain(ItemDefinition::itemName)
.plain(ItemDefinition::price)
.plain(ItemDefinition::rarity)
.plain(ItemDefinition::category)
.plain(ItemDefinition::inventoryIcon, Starbound::readingFolderTransformerNullable)
.plain(ItemDefinition::description)
.plain(ItemDefinition::shortdescription)
.auto(ItemDefinition::itemName)
.auto(ItemDefinition::price)
.auto(ItemDefinition::rarity)
.auto(ItemDefinition::category)
.auto(ItemDefinition::inventoryIcon, Starbound::readingFolderTransformerNullable)
.auto(ItemDefinition::description)
.auto(ItemDefinition::shortdescription)
.list(ItemDefinition::itemTags)
.list(ItemDefinition::learnBlueprintsOnPickup)
.plain(ItemDefinition::maxStack)
.plain(ItemDefinition::eventCategory)
.plain(ItemDefinition::consumeOnPickup)
.auto(ItemDefinition::maxStack)
.auto(ItemDefinition::eventCategory)
.auto(ItemDefinition::consumeOnPickup)
.list(ItemDefinition::pickupQuestTemplates)
.plain(ItemDefinition::race)
.plain(ItemDefinition::displayImage, transformer = Starbound::readingFolderTransformerNullable)
.plain(ItemDefinition::displayoffset)
.plain(ItemDefinition::fossilSetName)
.plain(ItemDefinition::setIndex)
.plain(ItemDefinition::setCount)
.auto(ItemDefinition::race)
.auto(ItemDefinition::displayImage, transformer = Starbound::readingFolderTransformerNullable)
.auto(ItemDefinition::displayoffset)
.auto(ItemDefinition::fossilSetName)
.auto(ItemDefinition::setIndex)
.auto(ItemDefinition::setCount)
.map(ItemDefinition::setCollectables, String::class)
.plain(ItemDefinition::completeFossilIcon)
.plain(ItemDefinition::completeFossilObject)
.auto(ItemDefinition::completeFossilIcon)
.auto(ItemDefinition::completeFossilObject)
.plain(ItemDefinition::completeSetDescriptions)
.auto(ItemDefinition::completeSetDescriptions)
.list(ItemDefinition::radioMessagesOnPickup)
.plain(ItemDefinition::fuelAmount)
.auto(ItemDefinition::fuelAmount)
.list(ItemDefinition::pickupSoundsSmall)
.list(ItemDefinition::pickupSoundsMedium)
.list(ItemDefinition::pickupSoundsLarge)
.plain(ItemDefinition::smallStackLimit)
.plain(ItemDefinition::mediumStackLimit)
.plain(ItemDefinition::currency)
.plain(ItemDefinition::value)
.auto(ItemDefinition::smallStackLimit)
.auto(ItemDefinition::mediumStackLimit)
.auto(ItemDefinition::currency)
.auto(ItemDefinition::value)
.list(ItemDefinition::scripts, transformer = Starbound::readingFolderListTransformer)
.list(ItemDefinition::animationScripts, transformer = Starbound::readingFolderListTransformer)
.plain(ItemDefinition::tooltipKind)
.plain(ItemDefinition::level)
.auto(ItemDefinition::tooltipKind)
.auto(ItemDefinition::level)
.list(ItemDefinition::leveledStatusEffects)
// .map(ItemDefinition::colorOptions)
.plain(ItemDefinition::maleFrames)
.plain(ItemDefinition::femaleFrames)
.auto(ItemDefinition::maleFrames)
.auto(ItemDefinition::femaleFrames)
.plain(ItemDefinition::animation, transformer = Starbound::readingFolderTransformerNullable)
.plain(ItemDefinition::twoHanded)
.auto(ItemDefinition::animation, transformer = Starbound::readingFolderTransformerNullable)
.auto(ItemDefinition::twoHanded)
.storesJson()
.build()
val FOSSIL_ADAPTER = KConcreteTypeAdapter.Builder(FossilSetDescription::class)
.plain(FossilSetDescription::price)
.plain(FossilSetDescription::shortdescription)
.plain(FossilSetDescription::description)
.auto(FossilSetDescription::price)
.auto(FossilSetDescription::shortdescription)
.auto(FossilSetDescription::description)
.specifyStringInterner(ADAPTER.stringInterner)
.build()
val ARMOR_FRAMES_ADAPTER = KConcreteTypeAdapter.Builder(ArmorFrames::class)
.plain(ArmorFrames::body, transformer = Starbound::readingFolderTransformer)
.plain(ArmorFrames::backSleeve, transformer = Starbound::readingFolderTransformer)
.plain(ArmorFrames::frontSleeve, transformer = Starbound::readingFolderTransformer)
.auto(ArmorFrames::body, transformer = Starbound::readingFolderTransformer)
.auto(ArmorFrames::backSleeve, transformer = Starbound::readingFolderTransformer)
.auto(ArmorFrames::frontSleeve, transformer = Starbound::readingFolderTransformer)
.build()
val STATUS_EFFECT_ADAPTER = KConcreteTypeAdapter.Builder(StatusEffect::class)
.plain(StatusEffect::levelFunction)
.plain(StatusEffect::stat)
.plain(StatusEffect::baseMultiplier)
.auto(StatusEffect::levelFunction)
.auto(StatusEffect::stat)
.auto(StatusEffect::baseMultiplier)
.build()
fun registerGson(gsonBuilder: GsonBuilder) {

View File

@ -26,23 +26,23 @@ data class LiquidDefinition(
companion object {
val ADAPTER = KConcreteTypeAdapter.Builder(LiquidDefinition::class)
.plain(LiquidDefinition::name)
.plain(LiquidDefinition::liquidId)
.plain(LiquidDefinition::description)
.plain(LiquidDefinition::tickDelta)
.plain(LiquidDefinition::color)
.plain(LiquidDefinition::itemDrop)
.auto(LiquidDefinition::name)
.auto(LiquidDefinition::liquidId)
.auto(LiquidDefinition::description)
.auto(LiquidDefinition::tickDelta)
.auto(LiquidDefinition::color)
.auto(LiquidDefinition::itemDrop)
.list(LiquidDefinition::statusEffects)
.list(LiquidDefinition::interactions)
.plain(LiquidDefinition::texture)
.plain(LiquidDefinition::bottomLightMix)
.plain(LiquidDefinition::textureMovementFactor)
.auto(LiquidDefinition::texture)
.auto(LiquidDefinition::bottomLightMix)
.auto(LiquidDefinition::textureMovementFactor)
.build()
val INTERACTION_ADAPTER = KConcreteTypeAdapter.Builder(Interaction::class)
.plain(Interaction::liquid)
.plain(Interaction::liquidResult)
.plain(Interaction::materialResult)
.auto(Interaction::liquid)
.auto(Interaction::liquidResult)
.auto(Interaction::materialResult)
.build()
fun registerGson(gsonBuilder: GsonBuilder) {

View File

@ -23,18 +23,18 @@ data class MaterialModifier(
companion object {
val ADAPTER = KConcreteTypeAdapter.Builder(MaterialModifier::class)
.plain(MaterialModifier::modId)
.plain(MaterialModifier::modName)
.plain(MaterialModifier::itemDrop)
.plain(MaterialModifier::description)
.plain(MaterialModifier::health)
.plain(MaterialModifier::harvestLevel)
.plain(MaterialModifier::breaksWithTile)
.plain(MaterialModifier::grass)
.auto(MaterialModifier::modId)
.auto(MaterialModifier::modName)
.auto(MaterialModifier::itemDrop)
.auto(MaterialModifier::description)
.auto(MaterialModifier::health)
.auto(MaterialModifier::harvestLevel)
.auto(MaterialModifier::breaksWithTile)
.auto(MaterialModifier::grass)
.list(MaterialModifier::miningSounds)
.plain(MaterialModifier::miningParticle)
.auto(MaterialModifier::miningParticle)
.plain(MaterialModifier::renderTemplate, RenderTemplate.CACHE)
.plain(MaterialModifier::renderParameters)
.auto(MaterialModifier::renderParameters)
.build()
fun registerGson(gsonBuilder: GsonBuilder) {

View File

@ -28,7 +28,7 @@ data class RenderParameters(
companion object {
val ADAPTER = KConcreteTypeAdapter.Builder(RenderParameters::class)
.plain(
.auto(
RenderParameters::texture,
RenderParameters::variants,
RenderParameters::multiColored,

View File

@ -27,7 +27,7 @@ data class RenderPiece(
) {
companion object {
val ADAPTER = KConcreteTypeAdapter.Builder(RenderPiece::class)
.plain(
.auto(
RenderPiece::texture,
RenderPiece::textureSize,
RenderPiece::texturePosition,
@ -83,7 +83,7 @@ data class RenderRuleList(
private val LOGGED = ObjectArraySet<String>()
val ADAPTER = KConcreteTypeAdapter.Builder(Entry::class)
.plain(
.auto(
Entry::type,
Entry::matchHue,
Entry::inverse,
@ -119,7 +119,7 @@ data class RenderRuleList(
companion object {
val ADAPTER = KConcreteTypeAdapter.Builder(RenderRuleList::class)
.list(RenderRuleList::entries)
.plain(RenderRuleList::join)
.auto(RenderRuleList::join)
.build()
}
}
@ -211,19 +211,19 @@ data class RenderMatch(
.list(RenderMatch::matchAllPoints)
.list(RenderMatch::matchAnyPoints)
.list(RenderMatch::subMatches)
.plain(RenderMatch::haltOnMatch)
.plain(RenderMatch::haltOnSubMatch)
.auto(RenderMatch::haltOnMatch)
.auto(RenderMatch::haltOnSubMatch)
.build()
val PIECE_ADAPTER = KConcreteTypeAdapter.Builder(Piece::class)
.plain(Piece::name)
.plain(Piece::offset)
.auto(Piece::name)
.auto(Piece::offset)
.inputAsList()
.build()
val MATCHER_ADAPTER = KConcreteTypeAdapter.Builder(Matcher::class)
.plain(Matcher::offset)
.plain(Matcher::ruleName)
.auto(Matcher::offset)
.auto(Matcher::ruleName)
.inputAsList()
.build()
}
@ -241,7 +241,7 @@ data class RenderMatchList(
companion object {
val ADAPTER = KConcreteTypeAdapter.Builder(RenderMatchList::class)
.plain(RenderMatchList::name)
.auto(RenderMatchList::name)
.list(RenderMatchList::list)
.inputAsList()
.build()
@ -263,7 +263,7 @@ data class RenderTemplate(
companion object {
val ADAPTER = KConcreteTypeAdapter.Builder(RenderTemplate::class)
.map(RenderTemplate::pieces, RenderPiece::class.java)
.plain(RenderTemplate::representativePiece)
.auto(RenderTemplate::representativePiece)
.list(RenderTemplate::matches, RenderMatchList::class.java)
.map(RenderTemplate::rules, RenderRuleList::class.java)
.build()

View File

@ -25,7 +25,7 @@ data class TileDefinition(
) : IRenderableTile {
companion object {
val ADAPTER = KConcreteTypeAdapter.Builder(TileDefinition::class)
.plain(
.auto(
TileDefinition::materialId,
TileDefinition::materialName,
TileDefinition::particleColor,
@ -39,7 +39,7 @@ data class TileDefinition(
TileDefinition::category
)
.plain(TileDefinition::renderTemplate, RenderTemplate.CACHE)
.plain(
.auto(
TileDefinition::renderParameters,
)
.build()

View File

@ -29,7 +29,6 @@ import kotlin.reflect.*
import kotlin.reflect.full.isSubclassOf
import kotlin.reflect.full.isSuperclassOf
import kotlin.reflect.full.isSupertypeOf
import kotlin.reflect.full.memberProperties
@Suppress("unchecked_cast")
private fun <T> resolveBound(bound: Class<T>, stringAdapter: TypeAdapter<String>): TypeAdapter<T> {
@ -543,18 +542,18 @@ class KConcreteTypeAdapter<T : Any> private constructor(
* Добавляет поля без generic типов и без преобразователей
*/
@Suppress("unchecked_cast")
fun plain(vararg fields: KProperty1<T, *>): Builder<T> {
fun auto(vararg fields: KProperty1<T, *>): Builder<T> {
for (field in fields)
plain(field)
auto(field)
return this
}
/**
* Добавляет поле без generic типов, опционально с преобразователем
* Автоматически определяет тип поля и необходимый адаптор типа к нему
*/
@Suppress("unchecked_cast")
fun <In> plain(field: KProperty1<T, In>, transformer: (In) -> In = { it }): Builder<T> {
fun <In> auto(field: KProperty1<T, In>, transformer: (In) -> In = { it }): Builder<T> {
val returnType = field.returnType
val classifier = returnType.classifier as? KClass<*> ?: throw ClassCastException("Unable to cast ${returnType.classifier} to KClass of property ${field.name}!")
@ -577,20 +576,6 @@ class KConcreteTypeAdapter<T : Any> private constructor(
return this
}
/**
* Добавляет поле(я) без generic типов.
*
* Если поле с данным именем не найдено, кидается [NoSuchElementException]
*/
fun plain(vararg fields: String): Builder<T> {
val members = clazz.memberProperties
return this.plain(*Array(fields.size) {
val field = fields[it]
return@Array members.firstOrNull { it.name == field } ?: throw NoSuchElementException("Unable to find field $field")
})
}
/**
* Добавляет поле, которое содержит список значений V (без null).
*
@ -601,14 +586,6 @@ class KConcreteTypeAdapter<T : Any> private constructor(
return this
}
fun <T> makeListAdapter(type: Class<T>): TypeAdapter<List<T>?> {
return ListAdapter(type, internedStringAdapter)
}
fun <T> makeObjectAdapter(type: Class<T>): TypeAdapter<Map<String, T>?> {
return StringMapAdapter(type, internedStringAdapter, stringInterner)
}
/**
* Добавляет поле, которое содержит список значений V (без null).
*