DEADSOFTWARE

Update android.yml
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / model / block / Block.kt
index 62c6f493e0f8d66221bc54d1a297dc506a28f688..2411a6352d963823bb921f1a8a741172150fddfb 100644 (file)
@@ -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()
@@ -116,17 +125,17 @@ sealed class Block {
     ): Block()
 
     sealed class Fluid: Block() {
-        abstract val statesCount: Int
+        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 */