KStarbound/src/main/kotlin/ru/dbotthepony/kstarbound/defs/tile/TileDefinition.kt

47 lines
1.4 KiB
Kotlin

package ru.dbotthepony.kstarbound.defs.tile
import com.google.gson.GsonBuilder
import ru.dbotthepony.kstarbound.io.json.builder.FactoryAdapter
import ru.dbotthepony.kstarbound.registerTypeAdapter
import ru.dbotthepony.kvector.vector.Color
data class TileDefinition(
val materialId: Int,
val materialName: String,
val particleColor: Color? = null,
val itemDrop: String? = null,
val description: String = "...",
val shortdescription: String = "...",
val footstepSound: String? = null,
val blocksLiquidFlow: Boolean = true,
val soil: Boolean = false,
val health: Double = 0.0,
val category: String,
override val renderTemplate: RenderTemplate,
override val renderParameters: RenderParameters,
) : IRenderableTile {
companion object {
val ADAPTER = FactoryAdapter.Builder(TileDefinition::class)
.auto(TileDefinition::materialId)
.auto(TileDefinition::materialName)
.auto(TileDefinition::particleColor)
.auto(TileDefinition::itemDrop)
.auto(TileDefinition::description)
.auto(TileDefinition::shortdescription)
.auto(TileDefinition::footstepSound)
.auto(TileDefinition::blocksLiquidFlow)
.auto(TileDefinition::soil)
.auto(TileDefinition::health)
.auto(TileDefinition::category)
.auto(TileDefinition::renderTemplate)
.auto(TileDefinition::renderParameters)
fun registerGson(gsonBuilder: GsonBuilder) {
gsonBuilder.registerTypeAdapterFactory(ADAPTER)
}
}
}