diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/ParallaxPrototype.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/ParallaxPrototype.kt index 92fcff7f..abb70af5 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/ParallaxPrototype.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/ParallaxPrototype.kt @@ -6,7 +6,7 @@ import com.google.gson.TypeAdapter import com.google.gson.stream.JsonReader import com.google.gson.stream.JsonToken import com.google.gson.stream.JsonWriter -import ru.dbotthepony.kstarbound.io.json.KTypeAdapter +import ru.dbotthepony.kstarbound.io.json.BuilderAdapter import ru.dbotthepony.kvector.vector.ndouble.Vector2d import kotlin.properties.Delegates @@ -16,7 +16,7 @@ class ParallaxPrototype { var layers = Array(0) { ParallaxPrototypeLayer() } companion object { - val ADAPTER = KTypeAdapter(::ParallaxPrototype, + val ADAPTER = BuilderAdapter(::ParallaxPrototype, ParallaxPrototype::verticalOrigin, ParallaxPrototype::layers, ) @@ -80,7 +80,7 @@ class ParallaxPrototypeLayer { } } - val ADAPTER = KTypeAdapter(::ParallaxPrototypeLayer, + val ADAPTER = BuilderAdapter(::ParallaxPrototypeLayer, ParallaxPrototypeLayer::timeOfDayCorrelation, ParallaxPrototypeLayer::offset, ParallaxPrototypeLayer::repeatY, diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/item/ItemDefinition.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/item/ItemDefinition.kt index 0b44fd16..f25e3f66 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/item/ItemDefinition.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/item/ItemDefinition.kt @@ -3,7 +3,7 @@ package ru.dbotthepony.kstarbound.defs.item import com.google.gson.GsonBuilder import ru.dbotthepony.kstarbound.Starbound import ru.dbotthepony.kstarbound.defs.animation.SpriteReference -import ru.dbotthepony.kstarbound.io.json.KConcreteTypeAdapter +import ru.dbotthepony.kstarbound.io.json.FactoryAdapter import ru.dbotthepony.kstarbound.io.json.ListAdapter import ru.dbotthepony.kstarbound.io.json.asJsonObject import ru.dbotthepony.kstarbound.io.json.asList @@ -263,11 +263,11 @@ data class ItemDefinition( ) companion object { - val INVENTORY_ICON_ADAPTER = KConcreteTypeAdapter.Builder(InventoryIcon::class) + val INVENTORY_ICON_ADAPTER = FactoryAdapter.Builder(InventoryIcon::class) .auto(InventoryIcon::image) .build() - val ADAPTER = KConcreteTypeAdapter.Builder(ItemDefinition::class) + val ADAPTER = FactoryAdapter.Builder(ItemDefinition::class) .auto(ItemDefinition::itemName) .auto(ItemDefinition::price) .auto(ItemDefinition::rarity) @@ -323,20 +323,20 @@ data class ItemDefinition( .build() - val FOSSIL_ADAPTER = KConcreteTypeAdapter.Builder(FossilSetDescription::class) + val FOSSIL_ADAPTER = FactoryAdapter.Builder(FossilSetDescription::class) .auto(FossilSetDescription::price) .auto(FossilSetDescription::shortdescription) .auto(FossilSetDescription::description) .build() - val ARMOR_FRAMES_ADAPTER = KConcreteTypeAdapter.Builder(ArmorFrames::class) + val ARMOR_FRAMES_ADAPTER = FactoryAdapter.Builder(ArmorFrames::class) .auto(ArmorFrames::body, transformer = Starbound::readingFolderTransformer) .auto(ArmorFrames::backSleeve, transformer = Starbound::readingFolderTransformerNullable) .auto(ArmorFrames::frontSleeve, transformer = Starbound::readingFolderTransformerNullable) .build() .ifString { ArmorFrames(Starbound.readingFolderTransformer(it), null, null) } - val STATUS_EFFECT_ADAPTER = KConcreteTypeAdapter.Builder(StatusEffect::class) + val STATUS_EFFECT_ADAPTER = FactoryAdapter.Builder(StatusEffect::class) .auto(StatusEffect::levelFunction) .auto(StatusEffect::stat) .auto(StatusEffect::baseMultiplier) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/liquid/LiquidDefinition.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/liquid/LiquidDefinition.kt index f6e1cad2..8376bc76 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/liquid/LiquidDefinition.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/liquid/LiquidDefinition.kt @@ -1,7 +1,7 @@ package ru.dbotthepony.kstarbound.defs.liquid import com.google.gson.GsonBuilder -import ru.dbotthepony.kstarbound.io.json.KConcreteTypeAdapter +import ru.dbotthepony.kstarbound.io.json.FactoryAdapter import ru.dbotthepony.kstarbound.registerTypeAdapter import ru.dbotthepony.kvector.vector.Color @@ -25,7 +25,7 @@ data class LiquidDefinition( } companion object { - val ADAPTER = KConcreteTypeAdapter.Builder(LiquidDefinition::class) + val ADAPTER = FactoryAdapter.Builder(LiquidDefinition::class) .auto(LiquidDefinition::name) .auto(LiquidDefinition::liquidId) .auto(LiquidDefinition::description) @@ -39,7 +39,7 @@ data class LiquidDefinition( .auto(LiquidDefinition::textureMovementFactor) .build() - val INTERACTION_ADAPTER = KConcreteTypeAdapter.Builder(Interaction::class) + val INTERACTION_ADAPTER = FactoryAdapter.Builder(Interaction::class) .auto(Interaction::liquid) .auto(Interaction::liquidResult) .auto(Interaction::materialResult) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/Configurable.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/Configurable.kt index e7a86b6b..9f6b79ec 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/Configurable.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/Configurable.kt @@ -8,7 +8,7 @@ import org.apache.logging.log4j.LogManager import ru.dbotthepony.kstarbound.Starbound import ru.dbotthepony.kstarbound.defs.* import ru.dbotthepony.kstarbound.io.json.ConfigurableTypeAdapter -import ru.dbotthepony.kstarbound.io.json.KTypeAdapter +import ru.dbotthepony.kstarbound.io.json.BuilderAdapter import ru.dbotthepony.kstarbound.io.json.CustomEnumTypeAdapter import ru.dbotthepony.kvector.vector.Color import kotlin.properties.Delegates @@ -182,7 +182,7 @@ class ActionConfig : IConfigurableAction { } companion object { - val ADAPTER = KTypeAdapter(::ActionConfig, ActionConfig::file).ignoreProperty("action") + val ADAPTER = BuilderAdapter(::ActionConfig, ActionConfig::file).ignoreProperty("action") private val cache = HashMap() } @@ -201,7 +201,7 @@ class ActionProjectile : IConfigurableAction { } companion object { - val ADAPTER = KTypeAdapter(::ActionProjectile, + val ADAPTER = BuilderAdapter(::ActionProjectile, ActionProjectile::type, ActionProjectile::angle, ActionProjectile::inheritDamageFactor, @@ -220,7 +220,7 @@ class ActionSound : IConfigurableAction { } companion object { - val ADAPTER = KTypeAdapter(::ActionSound, + val ADAPTER = BuilderAdapter(::ActionSound, ActionSound::options, ).ignoreProperty("action") } @@ -238,7 +238,7 @@ class ActionLoop : IConfigurableAction { } companion object { - val ADAPTER = KTypeAdapter(::ActionLoop, + val ADAPTER = BuilderAdapter(::ActionLoop, ActionLoop::count, ActionLoop::body, ).ignoreProperty("action") @@ -256,7 +256,7 @@ class ActionActions : IConfigurableAction { } companion object { - val ADAPTER = KTypeAdapter(::ActionActions, + val ADAPTER = BuilderAdapter(::ActionActions, ActionActions::list, ).ignoreProperty("action") } diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/MaterialModifier.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/MaterialModifier.kt index a0b4b1f8..8323ac79 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/MaterialModifier.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/MaterialModifier.kt @@ -1,7 +1,7 @@ package ru.dbotthepony.kstarbound.defs.tile import com.google.gson.GsonBuilder -import ru.dbotthepony.kstarbound.io.json.KConcreteTypeAdapter +import ru.dbotthepony.kstarbound.io.json.FactoryAdapter data class MaterialModifier( val modId: Int, @@ -22,7 +22,7 @@ data class MaterialModifier( } companion object { - val ADAPTER = KConcreteTypeAdapter.Builder(MaterialModifier::class) + val ADAPTER = FactoryAdapter.Builder(MaterialModifier::class) .auto(MaterialModifier::modId) .auto(MaterialModifier::modName) .auto(MaterialModifier::itemDrop) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/RenderParameters.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/RenderParameters.kt index 22d2804a..f5cea217 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/RenderParameters.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/RenderParameters.kt @@ -2,7 +2,7 @@ package ru.dbotthepony.kstarbound.defs.tile import com.google.gson.GsonBuilder import ru.dbotthepony.kstarbound.Starbound -import ru.dbotthepony.kstarbound.io.json.KConcreteTypeAdapter +import ru.dbotthepony.kstarbound.io.json.FactoryAdapter const val TILE_COLOR_VARIANTS = 9 @@ -27,7 +27,7 @@ data class RenderParameters( } companion object { - val ADAPTER = KConcreteTypeAdapter.Builder(RenderParameters::class) + val ADAPTER = FactoryAdapter.Builder(RenderParameters::class) .auto( RenderParameters::texture, RenderParameters::variants, diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/RenderTemplate.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/RenderTemplate.kt index 3c8df3ef..11daed35 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/RenderTemplate.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/RenderTemplate.kt @@ -10,7 +10,7 @@ import it.unimi.dsi.fastutil.objects.ObjectArraySet import org.apache.logging.log4j.LogManager import ru.dbotthepony.kstarbound.Starbound import ru.dbotthepony.kstarbound.io.json.EnumAdapter -import ru.dbotthepony.kstarbound.io.json.KConcreteTypeAdapter +import ru.dbotthepony.kstarbound.io.json.FactoryAdapter import ru.dbotthepony.kstarbound.registerTypeAdapter import ru.dbotthepony.kstarbound.util.WriteOnce import ru.dbotthepony.kstarbound.world.ITileGetter @@ -26,7 +26,7 @@ data class RenderPiece( val variantStride: Vector2i? = null, ) { companion object { - val ADAPTER = KConcreteTypeAdapter.Builder(RenderPiece::class) + val ADAPTER = FactoryAdapter.Builder(RenderPiece::class) .auto( RenderPiece::texture, RenderPiece::textureSize, @@ -82,7 +82,7 @@ data class RenderRuleList( private val LOGGER = LogManager.getLogger() private val LOGGED = ObjectArraySet() - val ADAPTER = KConcreteTypeAdapter.Builder(Entry::class) + val ADAPTER = FactoryAdapter.Builder(Entry::class) .auto( Entry::type, Entry::matchHue, @@ -117,7 +117,7 @@ data class RenderRuleList( } companion object { - val ADAPTER = KConcreteTypeAdapter.Builder(RenderRuleList::class) + val ADAPTER = FactoryAdapter.Builder(RenderRuleList::class) .autoList(RenderRuleList::entries) .auto(RenderRuleList::join) .build() @@ -206,7 +206,7 @@ data class RenderMatch( } companion object { - val ADAPTER = KConcreteTypeAdapter.Builder(RenderMatch::class) + val ADAPTER = FactoryAdapter.Builder(RenderMatch::class) .autoList(RenderMatch::pieces) .autoList(RenderMatch::matchAllPoints) .autoList(RenderMatch::matchAnyPoints) @@ -215,13 +215,13 @@ data class RenderMatch( .auto(RenderMatch::haltOnSubMatch) .build() - val PIECE_ADAPTER = KConcreteTypeAdapter.Builder(Piece::class) + val PIECE_ADAPTER = FactoryAdapter.Builder(Piece::class) .auto(Piece::name) .auto(Piece::offset) .inputAsList() .build() - val MATCHER_ADAPTER = KConcreteTypeAdapter.Builder(Matcher::class) + val MATCHER_ADAPTER = FactoryAdapter.Builder(Matcher::class) .auto(Matcher::offset) .auto(Matcher::ruleName) .inputAsList() @@ -240,7 +240,7 @@ data class RenderMatchList( } companion object { - val ADAPTER = KConcreteTypeAdapter.Builder(RenderMatchList::class) + val ADAPTER = FactoryAdapter.Builder(RenderMatchList::class) .auto(RenderMatchList::name) .autoList(RenderMatchList::list) .inputAsList() @@ -261,7 +261,7 @@ data class RenderTemplate( } companion object { - val ADAPTER = KConcreteTypeAdapter.Builder(RenderTemplate::class) + val ADAPTER = FactoryAdapter.Builder(RenderTemplate::class) .mapAsObject(RenderTemplate::pieces, RenderPiece::class.java) .auto(RenderTemplate::representativePiece) .list(RenderTemplate::matches, RenderMatchList::class.java) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/TileDefinition.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/TileDefinition.kt index b228508a..ce0e08d1 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/TileDefinition.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/TileDefinition.kt @@ -1,7 +1,7 @@ package ru.dbotthepony.kstarbound.defs.tile import com.google.gson.GsonBuilder -import ru.dbotthepony.kstarbound.io.json.KConcreteTypeAdapter +import ru.dbotthepony.kstarbound.io.json.FactoryAdapter import ru.dbotthepony.kstarbound.registerTypeAdapter import ru.dbotthepony.kvector.vector.Color @@ -24,7 +24,7 @@ data class TileDefinition( override val renderParameters: RenderParameters, ) : IRenderableTile { companion object { - val ADAPTER = KConcreteTypeAdapter.Builder(TileDefinition::class) + val ADAPTER = FactoryAdapter.Builder(TileDefinition::class) .auto( TileDefinition::materialId, TileDefinition::materialName, diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/world/SkyParameters.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/world/SkyParameters.kt index eda87066..33ae1ea3 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/world/SkyParameters.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/world/SkyParameters.kt @@ -7,7 +7,7 @@ import com.google.gson.stream.JsonWriter import org.apache.logging.log4j.LogManager import ru.dbotthepony.kstarbound.io.ColorTypeAdapter import ru.dbotthepony.kstarbound.io.json.CustomEnumTypeAdapter -import ru.dbotthepony.kstarbound.io.json.KTypeAdapter +import ru.dbotthepony.kstarbound.io.json.BuilderAdapter import ru.dbotthepony.kvector.vector.Color import ru.dbotthepony.kvector.vector.ndouble.Vector2d import kotlin.properties.ReadWriteProperty @@ -26,7 +26,7 @@ class SkyParameters { var seed = 0L companion object { - val ADAPTER = KTypeAdapter(::SkyParameters, + val ADAPTER = BuilderAdapter(::SkyParameters, SkyParameters::spaceLevel, SkyParameters::ambientLightLevel, SkyParameters::skyType, @@ -85,7 +85,7 @@ class SkyColoring { var nightLightColor = Color.TRANSLUCENT companion object { - val ADAPTER = KTypeAdapter(::SkyColoring, + val ADAPTER = BuilderAdapter(::SkyColoring, SkyColoring::mainColor, SkyColoring::morningColors, SkyColoring::dayColors, @@ -138,12 +138,12 @@ class SkySatellite { var layers = Array(0) { Layer() } companion object { - val ADAPTER = KTypeAdapter(::SkySatellite, + val ADAPTER = BuilderAdapter(::SkySatellite, SkySatellite::pos, SkySatellite::layers, ) - val LAYER_ADAPTER = KTypeAdapter(::Layer, + val LAYER_ADAPTER = BuilderAdapter(::Layer, Layer::scale, Layer::image, Layer::hueShift, diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/world/WorldProperties.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/world/WorldProperties.kt index a6172bec..8fe5343d 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/world/WorldProperties.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/world/WorldProperties.kt @@ -1,7 +1,7 @@ package ru.dbotthepony.kstarbound.defs.world import com.google.gson.GsonBuilder -import ru.dbotthepony.kstarbound.io.json.KTypeAdapter +import ru.dbotthepony.kstarbound.io.json.BuilderAdapter class WorldProperties { var nonCombat = false @@ -13,7 +13,7 @@ class WorldProperties { } companion object { - val ADAPTER = KTypeAdapter(::WorldProperties, + val ADAPTER = BuilderAdapter(::WorldProperties, WorldProperties::nonCombat, ) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/world/dungeon/Configurable.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/world/dungeon/Configurable.kt index e4ae9aaf..95fe1252 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/world/dungeon/Configurable.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/world/dungeon/Configurable.kt @@ -4,7 +4,7 @@ import com.google.gson.GsonBuilder import ru.dbotthepony.kstarbound.defs.world.SkyParameters import ru.dbotthepony.kstarbound.defs.world.WorldProperties import ru.dbotthepony.kstarbound.io.json.CustomEnumTypeAdapter -import ru.dbotthepony.kstarbound.io.json.KTypeAdapter +import ru.dbotthepony.kstarbound.io.json.BuilderAdapter import kotlin.properties.Delegates class DungeonWorldDef { @@ -32,7 +32,7 @@ class DungeonWorldDef { var planetSize: String? = null companion object { - val ADAPTER = KTypeAdapter(::DungeonWorldDef, + val ADAPTER = BuilderAdapter(::DungeonWorldDef, DungeonWorldDef::type, DungeonWorldDef::dungeonWorld, DungeonWorldDef::seed, diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/KTypeAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/BuilderAdapter.kt similarity index 94% rename from src/main/kotlin/ru/dbotthepony/kstarbound/io/json/KTypeAdapter.kt rename to src/main/kotlin/ru/dbotthepony/kstarbound/io/json/BuilderAdapter.kt index 6b0189ec..af0d36fe 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/KTypeAdapter.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/BuilderAdapter.kt @@ -22,11 +22,9 @@ import kotlin.reflect.full.isSuperclassOf * Создаёт пустые классы, а после наполняет их данными, что подходит для builder'ов с очень * большим количеством возможных данных внутри. * - * - * * Подходит для игровых структур которые могут быть "разобраны" и пересобраны. */ -class KTypeAdapter(val factory: () -> T, vararg fields: KMutableProperty1) : TypeAdapter() { +class BuilderAdapter(val factory: () -> T, vararg fields: KMutableProperty1) : TypeAdapter() { private val mappedFields = Object2ObjectArrayMap>() // потому что returnType медленный private val mappedFieldsReturnTypes = Object2ObjectArrayMap() @@ -52,7 +50,7 @@ class KTypeAdapter(val factory: () -> T, vararg fields: KMutableProperty1 { + fun ignoreProperty(vararg value: String): BuilderAdapter { ignoreProperties.addAll(value) return this } @@ -60,12 +58,12 @@ class KTypeAdapter(val factory: () -> T, vararg fields: KMutableProperty1 { + fun missingPropertiesAreFatal(flag: Boolean): BuilderAdapter { missingPropertiesAreFatal = flag return this } - fun missingLogLevel(level: Level): KTypeAdapter { + fun missingLogLevel(level: Level): BuilderAdapter { missingLogLevel = level return this } diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/KConcreteTypeAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/FactoryAdapter.kt similarity index 98% rename from src/main/kotlin/ru/dbotthepony/kstarbound/io/json/KConcreteTypeAdapter.kt rename to src/main/kotlin/ru/dbotthepony/kstarbound/io/json/FactoryAdapter.kt index 4b7c32cf..ce87d367 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/KConcreteTypeAdapter.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/FactoryAdapter.kt @@ -38,7 +38,7 @@ private data class PackedProperty( /** * TypeAdapter для классов которые создаются единожды и более не меняются ("бетонных классов"). */ -class KConcreteTypeAdapter private constructor( +class FactoryAdapter private constructor( val bound: KClass, private val types: ImmutableList>, val asJsonArray: Boolean, @@ -354,7 +354,7 @@ class KConcreteTypeAdapter private constructor( } /** - * Позволяет построить класс [KConcreteTypeAdapter] на основе заданных параметров + * Позволяет построить класс [FactoryAdapter] на основе заданных параметров */ class Builder(val clazz: KClass) { private val types = ArrayList>() @@ -489,8 +489,8 @@ class KConcreteTypeAdapter private constructor( return this } - fun build(): KConcreteTypeAdapter { - return KConcreteTypeAdapter( + fun build(): FactoryAdapter { + return FactoryAdapter( bound = clazz, types = ImmutableList.copyOf(types), asJsonArray = asList,