X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fmodel%2Fblock%2FBlock.kt;h=45363440e290fad732955cddb78424b7c2e6c01f;hb=63ffd8af5e9788f36fc75b6d5c29ae525eb74692;hp=440d258eb94bbb832df8bedd9e060c3661382079;hpb=6a71a9abc5bc34547c0e4bea7ab19a6bee628a3c;p=cavedroid.git 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 440d258..4536344 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/model/block/Block.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/model/block/Block.kt @@ -20,11 +20,14 @@ sealed class Block { private var animation: Array? = null - private var sprite: Sprite? = null + private var _sprite: Sprite? = null get() { return animation?.get(currentAnimationFrame) ?: field } + val sprite: Sprite + get() = requireNotNull(_sprite) + private val currentAnimationFrame: Int get() { return params.animationInfo?.let { animInfo -> @@ -50,7 +53,7 @@ sealed class Block { } 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) @@ -61,7 +64,7 @@ sealed class Block { 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, @@ -112,18 +115,14 @@ sealed class Block { val fullBlockKey: String, ): Block() - abstract class Fluid: Block() { - abstract val statesCount: Int - } + sealed class Fluid: Block() data class Water( override val params: CommonBlockParams, - override val statesCount: Int ) : Fluid() data class Lava( override val params: CommonBlockParams, - override val statesCount: Int ) : Fluid() /* Legacy accessors below */