From fe994621c026675cc74b43ef608e78b43c7b290b Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Fri, 16 Dec 2016 23:01:17 +0900 Subject: [PATCH] InventoryItem is now abstract class Former-commit-id: b7d22a2cc169a89cbe82aae8b13277b1be747b94 Former-commit-id: dcbf2bf830046b97673a0d2bab65e53c4451966f --- .../terrarum/gameitem/InventoryItem.kt | 40 +++++++++++++------ .../terrarum/gameitem/InventoryItemAdapter.kt | 34 ---------------- 2 files changed, 27 insertions(+), 47 deletions(-) delete mode 100644 src/net/torvald/terrarum/gameitem/InventoryItemAdapter.kt diff --git a/src/net/torvald/terrarum/gameitem/InventoryItem.kt b/src/net/torvald/terrarum/gameitem/InventoryItem.kt index 072bce5e8..b676441fc 100644 --- a/src/net/torvald/terrarum/gameitem/InventoryItem.kt +++ b/src/net/torvald/terrarum/gameitem/InventoryItem.kt @@ -5,7 +5,7 @@ import org.newdawn.slick.GameContainer /** * Created by minjaesong on 16-01-16. */ -interface InventoryItem { +abstract class InventoryItem { /** * Internal ID of an Item, Long * 0-4095: Tiles @@ -13,18 +13,18 @@ interface InventoryItem { * 32768-16777215: Dynamic items * >= 16777216: Actor RefID */ - val itemID: Int + abstract val id: Int /** * Where to equip the item */ - val equipPosition: Int + abstract val equipPosition: Int /** * Base mass of the item. Real mass must be calculated from * mass * scale^3 */ - var mass: Double + abstract var mass: Double /** * Scale of the item. @@ -32,42 +32,56 @@ interface InventoryItem { * For static item, it must be 1.0. If you tinkered the item to be bigger, * it must be re-assigned as Dynamic Item */ - var scale: Double + abstract var scale: Double /** * Effects applied continuously while in pocket */ - fun effectWhileInPocket(gc: GameContainer, delta: Int) + open fun effectWhileInPocket(gc: GameContainer, delta: Int) { } /** * Effects applied immediately only once if picked up */ - fun effectWhenPickedUp(gc: GameContainer, delta: Int) + open fun effectWhenPickedUp(gc: GameContainer, delta: Int) { } /** * Effects applied (continuously or not) while primary button (usually left mouse button) is down */ - fun primaryUse(gc: GameContainer, delta: Int) + open fun primaryUse(gc: GameContainer, delta: Int) { } /** * Effects applied (continuously or not) while secondary button (usually right mouse button) is down */ - fun secondaryUse(gc: GameContainer, delta: Int) + open fun secondaryUse(gc: GameContainer, delta: Int) { } /** * Effects applied immediately only once if thrown from pocket */ - fun effectWhenThrown(gc: GameContainer, delta: Int) + open fun effectWhenThrown(gc: GameContainer, delta: Int) { } /** - * Effects applied (continuously or not) when equipped + * Effects applied (continuously or not) when equipped (drawn) */ - fun effectWhenEquipped(gc: GameContainer, delta: Int) + open fun effectWhenEquipped(gc: GameContainer, delta: Int) { } /** * Effects applied only once when unequipped */ - fun effectWhenUnEquipped(gc: GameContainer, delta: Int) + open fun effectWhenUnEquipped(gc: GameContainer, delta: Int) { } + + + override fun toString(): String { + return id.toString() + } + + override fun hashCode(): Int { + return id + } + + override fun equals(other: Any?): Boolean { + if (other == null) return false + return id == (other as InventoryItem).id + } } object EquipPosition { diff --git a/src/net/torvald/terrarum/gameitem/InventoryItemAdapter.kt b/src/net/torvald/terrarum/gameitem/InventoryItemAdapter.kt deleted file mode 100644 index ef6114290..000000000 --- a/src/net/torvald/terrarum/gameitem/InventoryItemAdapter.kt +++ /dev/null @@ -1,34 +0,0 @@ -package net.torvald.terrarum.gameitem - -import org.newdawn.slick.GameContainer - -/** - * Created by SKYHi14 on 2016-12-12. - */ -abstract class InventoryItemAdapter : InventoryItem { - override abstract val itemID: Int - override abstract val equipPosition: Int - override abstract var mass: Double - override abstract var scale: Double - - override fun effectWhileInPocket(gc: GameContainer, delta: Int) { - } - - override fun effectWhenPickedUp(gc: GameContainer, delta: Int) { - } - - override fun primaryUse(gc: GameContainer, delta: Int) { - } - - override fun secondaryUse(gc: GameContainer, delta: Int) { - } - - override fun effectWhenThrown(gc: GameContainer, delta: Int) { - } - - override fun effectWhenEquipped(gc: GameContainer, delta: Int) { - } - - override fun effectWhenUnEquipped(gc: GameContainer, delta: Int) { - } -} \ No newline at end of file