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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -29,7 +29,6 @@ import kotlin.reflect.*
import kotlin.reflect.full.isSubclassOf import kotlin.reflect.full.isSubclassOf
import kotlin.reflect.full.isSuperclassOf import kotlin.reflect.full.isSuperclassOf
import kotlin.reflect.full.isSupertypeOf import kotlin.reflect.full.isSupertypeOf
import kotlin.reflect.full.memberProperties
@Suppress("unchecked_cast") @Suppress("unchecked_cast")
private fun <T> resolveBound(bound: Class<T>, stringAdapter: TypeAdapter<String>): TypeAdapter<T> { private fun <T> resolveBound(bound: Class<T>, stringAdapter: TypeAdapter<String>): TypeAdapter<T> {
@ -543,18 +542,18 @@ class KConcreteTypeAdapter<T : Any> private constructor(
* Добавляет поля без generic типов и без преобразователей * Добавляет поля без generic типов и без преобразователей
*/ */
@Suppress("unchecked_cast") @Suppress("unchecked_cast")
fun plain(vararg fields: KProperty1<T, *>): Builder<T> { fun auto(vararg fields: KProperty1<T, *>): Builder<T> {
for (field in fields) for (field in fields)
plain(field) auto(field)
return this return this
} }
/** /**
* Добавляет поле без generic типов, опционально с преобразователем * Автоматически определяет тип поля и необходимый адаптор типа к нему
*/ */
@Suppress("unchecked_cast") @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 returnType = field.returnType
val classifier = returnType.classifier as? KClass<*> ?: throw ClassCastException("Unable to cast ${returnType.classifier} to KClass of property ${field.name}!") 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 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). * Добавляет поле, которое содержит список значений V (без null).
* *
@ -601,14 +586,6 @@ class KConcreteTypeAdapter<T : Any> private constructor(
return this 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). * Добавляет поле, которое содержит список значений V (без null).
* *