diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/item/Item.kt b/core/src/ru/deadsoftware/cavedroid/game/model/item/Item.kt
index 80a96251442ebd6bafb924b22044d4b24df703eb..b56f068892af48aebac980418468edc02d51196d 100644 (file)
package ru.deadsoftware.cavedroid.game.model.item
-import com.badlogic.gdx.Gdx
import com.badlogic.gdx.graphics.g2d.Sprite
import ru.deadsoftware.cavedroid.game.model.block.Block
+import ru.deadsoftware.cavedroid.game.model.block.Block as BlockModel
import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.contract
return this is Placeable
}
+ fun isSlab(): Boolean {
+ contract { returns(true) implies (this@Item is Slab) }
+ return this is Slab
+ }
+
+
fun isTool(): Boolean {
contract { returns(true) implies (this@Item is Tool) }
return this is Tool
abstract val useActionKey: String
}
+ sealed class Placeable : Item() {
+ abstract val block: BlockModel
+ override val sprite: Sprite get() = block.sprite
+ }
+
data class None(
override val params: CommonItemParams,
): Item() {
get() = throw IllegalAccessException("Trying to get sprite of None")
}
- data class Placeable(
+ data class Block(
override val params: CommonItemParams,
- val block: Block
- ) : Item() {
- override val sprite: Sprite get() = block.sprite
+ override val block: BlockModel
+ ) : Placeable()
+
+ data class Slab(
+ override val params: CommonItemParams,
+ val topPartBlock: BlockModel.Slab,
+ val bottomPartBlock: BlockModel.Slab
+ ) : Placeable() {
+ override val block get() = bottomPartBlock
}
data class Sword(