diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/Starbound.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/Starbound.kt index b82916f5..e394e7dc 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/Starbound.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/Starbound.kt @@ -252,7 +252,7 @@ object Starbound : IVFS { try { callback("Loading $listedFile") - val def = gson.fromJson(getReader(listedFile), ConfigurableProjectile::class.java).configure(getPathFolder(listedFile)) + val def = gson.fromJson(getReader(listedFile), ConfigurableProjectile::class.java).assemble(getPathFolder(listedFile)) check(projectiles[def.projectileName] == null) { "Already has projectile with ID ${def.projectileName} loaded!" } projectiles[def.projectileName] = def } catch(err: Throwable) { diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/ConfigurableDefinition.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/RawPrototype.kt similarity index 88% rename from src/main/kotlin/ru/dbotthepony/kstarbound/defs/ConfigurableDefinition.kt rename to src/main/kotlin/ru/dbotthepony/kstarbound/defs/RawPrototype.kt index c3ea0ea5..c2cfdf7b 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/ConfigurableDefinition.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/RawPrototype.kt @@ -128,10 +128,10 @@ fun flattenMap(input: Map): Object2ObjectArrayMap { * Если границы поля зависят от других полей, то проверка такого поля должна осуществляться уже при самой * сборке прототипа. */ -abstract class ConfigurableDefinition, Configured : ConfiguredDefinition> { +abstract class RawPrototype, ASSEMBLED : AssembledPrototype> { val json = Object2ObjectArrayMap() fun enroll() = enrollMap(json) - abstract fun configure(directory: String = ""): Configured + abstract fun assemble(directory: String = ""): ASSEMBLED } /** @@ -139,13 +139,13 @@ abstract class ConfigurableDefinition, Configurator : ConfigurableDefinition>( +abstract class AssembledPrototype, RAW : RawPrototype>( val json: ImmutableMap ) { open fun getParameter(key: String): Any? = json[key] - fun flatten() = flattenMap(json) - abstract fun reconfigure(): Configurator + fun unroll() = flattenMap(json) + abstract fun disassemble(): RAW } 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 a1b0cd38..1ae90871 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/Configurable.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/Configurable.kt @@ -13,7 +13,7 @@ import ru.dbotthepony.kstarbound.io.CustomEnumTypeAdapter import ru.dbotthepony.kvector.vector.Color import kotlin.properties.Delegates -class ConfigurableProjectile : ConfigurableDefinition() { +class ConfigurableProjectile : RawPrototype() { var projectileName by Delegates.notNull() var physics: ProjectilePhysics = ProjectilePhysics.DEFAULT var damageKindImage: String? = null @@ -46,7 +46,7 @@ class ConfigurableProjectile : ConfigurableDefinition() if (actionOnReap != null) { diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/Configured.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/Configured.kt index 88dffc14..6d600725 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/Configured.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/Configured.kt @@ -3,7 +3,7 @@ package ru.dbotthepony.kstarbound.defs.projectile import com.google.common.collect.ImmutableMap import org.apache.logging.log4j.LogManager import ru.dbotthepony.kstarbound.Starbound -import ru.dbotthepony.kstarbound.defs.ConfiguredDefinition +import ru.dbotthepony.kstarbound.defs.AssembledPrototype import ru.dbotthepony.kstarbound.defs.DamageType import ru.dbotthepony.kstarbound.defs.FrameSet import ru.dbotthepony.kstarbound.world.entities.projectile.AbstractProjectileMovementController @@ -33,8 +33,8 @@ class ConfiguredProjectile( val piercing: Boolean, val speed: Double, val power: Double, -) : ConfiguredDefinition(json) { - override fun reconfigure(): ConfigurableProjectile { +) : AssembledPrototype(json) { + override fun disassemble(): ConfigurableProjectile { TODO("Not yet implemented") } diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/ConfigurableTypeAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/ConfigurableTypeAdapter.kt index c5573ba8..36dc1db1 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/ConfigurableTypeAdapter.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/io/ConfigurableTypeAdapter.kt @@ -10,7 +10,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap import it.unimi.dsi.fastutil.objects.ObjectArraySet import org.apache.logging.log4j.LogManager import ru.dbotthepony.kstarbound.Starbound -import ru.dbotthepony.kstarbound.defs.ConfigurableDefinition +import ru.dbotthepony.kstarbound.defs.RawPrototype import ru.dbotthepony.kstarbound.defs.flattenJsonElement import kotlin.reflect.KClass import kotlin.reflect.KMutableProperty1 @@ -20,7 +20,7 @@ import kotlin.reflect.full.isSuperclassOf /** * Kotlin property aware adapter with arbitrary structure writer */ -class ConfigurableTypeAdapter>(val factory: () -> T, vararg fields: KMutableProperty1) : TypeAdapter() { +class ConfigurableTypeAdapter>(val factory: () -> T, vararg fields: KMutableProperty1) : TypeAdapter() { private val mappedFields = Object2ObjectArrayMap>() // потому что returnType медленный private val mappedFieldsReturnTypes = Object2ObjectArrayMap()