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

45 lines
1.4 KiB
Kotlin

package ru.dbotthepony.kstarbound.defs.tile
import com.google.gson.GsonBuilder
import ru.dbotthepony.kstarbound.io.json.builder.FactoryAdapter
data class MaterialModifier(
val modId: Int,
val modName: String,
val itemDrop: String? = null,
val description: String = "...",
val health: Int = 0,
val harvestLevel: Int = 0,
val breaksWithTile: Boolean = true,
val grass: Boolean = false,
val miningSounds: List<String> = listOf(),
val miningParticle: String? = null,
override val renderTemplate: RenderTemplate,
override val renderParameters: RenderParameters
) : IRenderableTile {
init {
require(modId > 0) { "Invalid material modifier ID $modId" }
}
companion object {
val ADAPTER = FactoryAdapter.Builder(MaterialModifier::class)
.auto(MaterialModifier::modId)
.auto(MaterialModifier::modName)
.auto(MaterialModifier::itemDrop)
.auto(MaterialModifier::description)
.auto(MaterialModifier::health)
.auto(MaterialModifier::harvestLevel)
.auto(MaterialModifier::breaksWithTile)
.auto(MaterialModifier::grass)
.autoList(MaterialModifier::miningSounds)
.auto(MaterialModifier::miningParticle)
.add(MaterialModifier::renderTemplate, RenderTemplate.CACHE)
.auto(MaterialModifier::renderParameters)
.build()
fun registerGson(gsonBuilder: GsonBuilder) {
gsonBuilder.registerTypeAdapter(MaterialModifier::class.java, ADAPTER)
}
}
}