diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/block/Block.kt b/core/src/ru/deadsoftware/cavedroid/game/model/block/Block.kt
index 440d258eb94bbb832df8bedd9e060c3661382079..798e3d9b8bfe3e5506de866b4c6e06215cbfaaf5 100644 (file)
private var animation: Array<Sprite>? = null
- private var sprite: Sprite? = null
+ private var _sprite: Sprite? = null
get() {
return animation?.get(currentAnimationFrame) ?: field
}
+ val sprite: Sprite
+ get() = requireNotNull(_sprite) { "null sprite for block '${params.key}'" }
+
private val currentAnimationFrame: Int
get() {
return params.animationInfo?.let { animInfo ->
}
private fun initSprite() {
- sprite = animation?.get(0) ?: params.texture?.let { tex ->
+ _sprite = animation?.get(0) ?: params.texture?.let { tex ->
val width = 16 - params.spriteMargins.left - params.spriteMargins.right
val height = 16 - params.spriteMargins.top - params.spriteMargins.bottom
Sprite(tex, params.spriteMargins.left, params.spriteMargins.top, width, height)
fun requireSprite() = requireNotNull(sprite)
fun draw(spriter: SpriteBatch, x: Float, y: Float) {
- sprite?.apply {
+ sprite.apply {
setBounds(
/* x = */ x + params.spriteMargins.left,
/* y = */ y + params.spriteMargins.top,
val fullBlockKey: String,
): Block()
- abstract class Fluid: Block() {
- abstract val statesCount: Int
+ sealed class Fluid: Block() {
+ abstract val state: Int
}
data class Water(
override val params: CommonBlockParams,
- override val statesCount: Int
+ override val state: Int,
) : Fluid()
data class Lava(
override val params: CommonBlockParams,
- override val statesCount: Int
+ override val state: Int,
) : Fluid()
/* Legacy accessors below */