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 798e3d9b8bfe3e5506de866b4c6e06215cbfaaf5..9669a5378c5f84dbafd7be4a58bc801522f2a3d7 100644 (file)
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
val width: Float get() = 16f - params.collisionMargins.left - params.collisionMargins.right
val height: Float get() = 16f - params.collisionMargins.top - params.collisionMargins.bottom
- private val spriteWidth: Float get() = 16f - params.spriteMargins.left - params.spriteMargins.right
- private val spriteHeight: Float get() = 16f - params.spriteMargins.top - params.spriteMargins.bottom
+ val spriteWidth: Float get() = 16f - params.spriteMargins.left - params.spriteMargins.right
+ val spriteHeight: Float get() = 16f - params.spriteMargins.top - params.spriteMargins.bottom
private var animation: Array<Sprite>? = null
} ?: 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()
return this is Slab
}
+ fun isNone(): Boolean {
+ contract { returns(true) implies (this@Block is None) }
+ return this is None
+ }
+
fun getRectangle(x: Int, y: Int): Rectangle {
return Rectangle(
/* x = */ x * 16f + params.collisionMargins.left,
)
}
-
+ data class None(
+ override val params: CommonBlockParams
+ ) : Block()
data class Normal(
override val params: CommonBlockParams,
data class Slab(
override val params: CommonBlockParams,
val fullBlockKey: String,
+ val otherPartBlockKey: String,
): Block()
sealed class Fluid: Block() {
@Deprecated(LEGACY_ACCESSOR_DEPRECATION) fun isTransparent() = params.isTransparent
@Deprecated(LEGACY_ACCESSOR_DEPRECATION) fun getTexture() = sprite
-
companion object {
private const val LEGACY_ACCESSOR_DEPRECATION = "legacy accessors will be removed"
private const val ANIMATION_FRAME_DURATION_MS = 100L