45 lines
1.4 KiB
Kotlin
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)
|
|
}
|
|
}
|
|
}
|