X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fmodel%2Fitem%2FItem.kt;h=1e6755ab7c367b8886301e3173c0664df038e3ec;hb=HEAD;hp=2b6b5fcd2498e82c29e925a685473dafd1d0e360;hpb=a21a93fd9fa33adebe52d1f4478866dcc3b66d96;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 deleted file mode 100644 index 2b6b5fc..0000000 --- a/core/src/ru/deadsoftware/cavedroid/game/model/item/Item.kt +++ /dev/null @@ -1,135 +0,0 @@ -package ru.deadsoftware.cavedroid.game.model.item - -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 - -@OptIn(ExperimentalContracts::class) -sealed class Item { - - abstract val params: CommonItemParams - abstract val sprite: Sprite - - override fun hashCode(): Int { - return params.key.hashCode() - } - - override fun equals(other: Any?): Boolean { - return params.key == (other as Item).params.key - } - - fun isNone(): Boolean { - contract { returns(true) implies (this@Item is None) } - return this is None - } - - fun isPlaceable(): Boolean { - contract { returns(true) implies (this@Item is Placeable) } - 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 - } - - fun isUsable(): Boolean { - contract { returns(true) implies (this@Item is Placeable) } - return this is Placeable - } - - @JvmOverloads - fun toInventoryItem(amount: Int = 1): InventoryItem { - return InventoryItem(this, amount) - } - - sealed class Tool : Item() { - abstract val mobDamageMultiplier: Float - abstract val blockDamageMultiplier: Float - abstract val level: Int - } - - sealed class Usable : 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() { - override val sprite: Sprite - get() = throw IllegalAccessException("Trying to get sprite of None") - } - - data class Block( - override val params: CommonItemParams, - 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( - override val params: CommonItemParams, - override val sprite: Sprite, - override val mobDamageMultiplier: Float, - override val blockDamageMultiplier: Float, - override val level: Int, - ) : Tool() - - data class Shovel( - override val params: CommonItemParams, - override val sprite: Sprite, - override val mobDamageMultiplier: Float, - override val blockDamageMultiplier: Float, - override val level: Int, - ) : Tool() - - data class Axe( - override val params: CommonItemParams, - override val sprite: Sprite, - override val mobDamageMultiplier: Float, - override val blockDamageMultiplier: Float, - override val level: Int, - ) : Tool() - - data class Pickaxe( - override val params: CommonItemParams, - override val sprite: Sprite, - override val mobDamageMultiplier: Float, - override val blockDamageMultiplier: Float, - override val level: Int, - ) : Tool() - - data class Shears( - override val params: CommonItemParams, - override val sprite: Sprite, - override val mobDamageMultiplier: Float, - override val blockDamageMultiplier: Float, - override val level: Int, - ) : Tool() - - data class Bucket( - override val params: CommonItemParams, - override val sprite: Sprite, - override val useActionKey: String - ) : Usable() - -} \ No newline at end of file