X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fmodel%2Fitem%2FItem.kt;h=b56f068892af48aebac980418468edc02d51196d;hb=8b34480aaaf0112671d319accff573030079c7b6;hp=80a96251442ebd6bafb924b22044d4b24df703eb;hpb=6da6f8b40b6945e0b4e8376f506c43e548918df4;p=cavedroid.git 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 80a9625..b56f068 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/model/item/Item.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/model/item/Item.kt @@ -1,8 +1,8 @@ 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 @@ -30,6 +30,12 @@ sealed class Item { 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 @@ -54,6 +60,11 @@ sealed class Item { 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() { @@ -61,11 +72,17 @@ sealed class 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(