X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;ds=sidebyside;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fmodel%2Fblock%2FBlock.kt;h=2411a6352d963823bb921f1a8a741172150fddfb;hb=d555e8c264aa89967f09aecd37f49c69c936bc1c;hp=45363440e290fad732955cddb78424b7c2e6c01f;hpb=63ffd8af5e9788f36fc75b6d5c29ae525eb74692;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 4536344..2411a63 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/model/block/Block.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/model/block/Block.kt @@ -4,6 +4,7 @@ import com.badlogic.gdx.graphics.g2d.Sprite import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.math.Rectangle import com.badlogic.gdx.utils.TimeUtils +import ru.deadsoftware.cavedroid.game.model.item.Item import kotlin.contracts.ExperimentalContracts import kotlin.contracts.contract @@ -26,7 +27,7 @@ sealed class Block { } val sprite: Sprite - get() = requireNotNull(_sprite) + get() = requireNotNull(_sprite) { "null sprite for block '${params.key}'" } private val currentAnimationFrame: Int get() { @@ -35,6 +36,14 @@ sealed class Block { } ?: 0 } + override fun hashCode(): Int { + return params.key.hashCode() + } + + override fun equals(other: Any?): Boolean { + return params.key == (other as Item).params.key + } + fun initialize() { initAnimation() initSprite() @@ -115,14 +124,18 @@ sealed class Block { val fullBlockKey: String, ): Block() - sealed class Fluid: Block() + sealed class Fluid: Block() { + abstract val state: Int + } data class Water( override val params: CommonBlockParams, + override val state: Int, ) : Fluid() data class Lava( override val params: CommonBlockParams, + override val state: Int, ) : Fluid() /* Legacy accessors below */