diff --git a/src/net/torvald/terrarum/UIItemInventoryElem.kt b/src/net/torvald/terrarum/UIItemInventoryElem.kt index 4a4aa3b0e..d9bac065c 100644 --- a/src/net/torvald/terrarum/UIItemInventoryElem.kt +++ b/src/net/torvald/terrarum/UIItemInventoryElem.kt @@ -7,6 +7,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.colourutil.CIELabUtil.darkerLab import net.torvald.terrarum.itemproperties.GameItem +import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellBase @@ -147,12 +148,12 @@ class UIItemInventoryElem( val inventory = player.inventory val slot = if (keycode == Input.Keys.NUM_0) 9 else keycode - Input.Keys.NUM_1 - val currentSlotItem = inventory?.getQuickslot(slot) + val currentSlotItem = inventory.getQuickslot(slot) inventory.setQuickBar( slot, - if (currentSlotItem?.item != item) + if (currentSlotItem?.item != item?.dynamicID) item?.dynamicID // register else null // drop registration @@ -161,7 +162,7 @@ class UIItemInventoryElem( // search for duplicates in the quickbar, except mine // if there is, unregister the other (0..9).minus(slot).forEach { - if (inventory.getQuickslot(it)?.item == item) { + if (inventory.getQuickslot(it)?.item == item?.dynamicID) { inventory.setQuickBar(it, null) } } @@ -183,7 +184,7 @@ class UIItemInventoryElem( if (player == null) return false - if (item != player.inventory.itemEquipped.get(itemEquipSlot)) { // if this item is unequipped, equip it + if (item != ItemCodex[player.inventory.itemEquipped.get(itemEquipSlot)]) { // if this item is unequipped, equip it player.equipItem(item!!) } else { // if not, unequip it diff --git a/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt b/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt index 5482508c8..968561eb7 100644 --- a/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt +++ b/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt @@ -6,6 +6,7 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.itemproperties.GameItem +import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellBase @@ -137,7 +138,7 @@ class UIItemInventoryElemSimple( inventory.setQuickBar( slot, - if (currentSlotItem?.item != item) + if (currentSlotItem?.item != item?.dynamicID) item?.dynamicID // register else null // drop registration @@ -146,7 +147,7 @@ class UIItemInventoryElemSimple( // search for duplicates in the quickbar, except mine // if there is, unregister the other (0..9).minus(slot).forEach { - if (inventory.getQuickslot(it)?.item == item) { + if (inventory.getQuickslot(it)?.item == item?.dynamicID) { inventory.setQuickBar(it, null) } } @@ -165,7 +166,7 @@ class UIItemInventoryElemSimple( val player = (Terrarum.ingame!! as Ingame).actorNowPlaying if (player == null) return false - if (item != player.inventory.itemEquipped.get(itemEquipSlot)) { // if this item is unequipped, equip it + if (item != ItemCodex[player.inventory.itemEquipped.get(itemEquipSlot)]) { // if this item is unequipped, equip it player.equipItem(item!!) } else { // if not, unequip it diff --git a/src/net/torvald/terrarum/gamecontroller/IngameController.kt b/src/net/torvald/terrarum/gamecontroller/IngameController.kt index ceaafd66f..6f9a6594e 100644 --- a/src/net/torvald/terrarum/gamecontroller/IngameController.kt +++ b/src/net/torvald/terrarum/gamecontroller/IngameController.kt @@ -12,6 +12,7 @@ import net.torvald.terrarum.floorInt import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.itemproperties.GameItem +import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.worlddrawer.FeaturesDrawer import net.torvald.terrarum.worlddrawer.WorldCamera @@ -66,10 +67,10 @@ class IngameController(val ingame: Ingame) : InputAdapter() { itemOnGrip?.let { if (Gdx.input.isButtonPressed(AppLoader.getConfigInt("mouseprimary"))) { - player.consumePrimary(it) + player.consumePrimary(ItemCodex[it]!!) } if (Gdx.input.isButtonPressed(AppLoader.getConfigInt("mousesecondary"))) { - player.consumeSecondary(it) + player.consumeSecondary(ItemCodex[it]!!) } } } diff --git a/src/net/torvald/terrarum/itemproperties/ItemCodex.kt b/src/net/torvald/terrarum/itemproperties/ItemCodex.kt index bf729f272..ce409df78 100644 --- a/src/net/torvald/terrarum/itemproperties/ItemCodex.kt +++ b/src/net/torvald/terrarum/itemproperties/ItemCodex.kt @@ -248,17 +248,20 @@ object ItemCodex { * Returns the item in the Codex. If the item is static, its clone will be returned (you are free to modify the returned item). * However, if the item is dynamic, the item itself will be returned. Modifying the item will affect the game. */ - operator fun get(code: ItemID): GameItem { + operator fun get(code: ItemID?): GameItem? { + if (code == null) return null + if (code <= ITEM_STATIC.endInclusive) // generic item return itemCodex[code]!!.clone() // from CSV else if (code <= ITEM_DYNAMIC.endInclusive) { - return itemCodex[code]!! + return dynamicItemDescription[code]!! } else { val a = (Terrarum.ingame!! as Ingame).getActorByID(code) // actor item if (a is CanBeAnItem) return a.itemData - throw IllegalArgumentException("Attempted to get item data of actor that cannot be an item. ($a)") + return null + //throw IllegalArgumentException("Attempted to get item data of actor that cannot be an item. ($a)") } } diff --git a/src/net/torvald/terrarum/modulebasegame/Ingame.kt b/src/net/torvald/terrarum/modulebasegame/Ingame.kt index a644c4b4d..a92239dee 100644 --- a/src/net/torvald/terrarum/modulebasegame/Ingame.kt +++ b/src/net/torvald/terrarum/modulebasegame/Ingame.kt @@ -17,6 +17,7 @@ import net.torvald.terrarum.gamecontroller.IngameController import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.itemproperties.GameItem +import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.modulebasegame.console.AVTracker import net.torvald.terrarum.modulebasegame.console.ActorsList import net.torvald.terrarum.modulebasegame.gameactors.* @@ -392,22 +393,22 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { override fun worldPrimaryClickStart(delta: Float) { val itemOnGrip = actorNowPlaying?.inventory?.itemEquipped?.get(GameItem.EquipPosition.HAND_GRIP) - itemOnGrip?.startPrimaryUse(delta) + ItemCodex[itemOnGrip]?.startPrimaryUse(delta) } override fun worldPrimaryClickEnd(delta: Float) { val itemOnGrip = actorNowPlaying?.inventory?.itemEquipped?.get(GameItem.EquipPosition.HAND_GRIP) - itemOnGrip?.endPrimaryUse(delta) + ItemCodex[itemOnGrip]?.endPrimaryUse(delta) } override fun worldSecondaryClickStart(delta: Float) { val itemOnGrip = actorNowPlaying?.inventory?.itemEquipped?.get(GameItem.EquipPosition.HAND_GRIP) - itemOnGrip?.startSecondaryUse(delta) + ItemCodex[itemOnGrip]?.startSecondaryUse(delta) } override fun worldSecondaryClickEnd(delta: Float) { val itemOnGrip = actorNowPlaying?.inventory?.itemEquipped?.get(GameItem.EquipPosition.HAND_GRIP) - itemOnGrip?.endSecondaryUse(delta) + ItemCodex[itemOnGrip]?.endSecondaryUse(delta) } @@ -671,9 +672,9 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { if (it is Pocketed) { it.inventory.forEach { inventoryEntry -> - inventoryEntry.item.effectWhileInPocket(delta) + ItemCodex[inventoryEntry.item]!!.effectWhileInPocket(delta) if (it.equipped(inventoryEntry.item)) { - inventoryEntry.item.effectWhenEquipped(delta) + ItemCodex[inventoryEntry.item]!!.effectWhenEquipped(delta) } } } diff --git a/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt b/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt index ea1ee086b..d41c521b3 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt @@ -4,9 +4,9 @@ import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.EchoError -import net.torvald.terrarum.modulebasegame.gameactors.Pocketed import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameactors.Pocketed /** * Created by minjaesong on 2016-12-12. @@ -39,7 +39,7 @@ internal object Inventory : ConsoleCommand { else { target!!.inventory.forEach { val (item, amount) = it if (amount == 0) { - EchoError("Unexpected zero-amounted item: ID ${item.dynamicID}") + EchoError("Unexpected zero-amounted item: ID $item") } Echo("ID $item${if (amount > 1) " ($amount)" else ""}") } @@ -59,13 +59,13 @@ internal object Inventory : ConsoleCommand { private fun addItem(refId: Int, amount: Int = 1) { if (target != null) { - target!!.addItem(ItemCodex[refId], amount) + target!!.addItem(ItemCodex[refId]!!, amount) } } private fun equipItem(refId: Int) { if (target != null) { - val item = ItemCodex[refId] + val item = ItemCodex[refId]!! target!!.equipItem(item) } } diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt index 0bf86e9d8..bcd71a2b4 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt @@ -9,6 +9,7 @@ import net.torvald.terrarum.gameactors.* import net.torvald.terrarum.gameactors.faction.Faction import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.itemproperties.GameItem +import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.itemproperties.Material import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.modulebasegame.gameworld.time_t @@ -208,10 +209,10 @@ open class ActorHumanoid( // update inventory items inventory.forEach { if (!inventory.itemEquipped.contains(it.item)) { // unequipped - it.item.effectWhileInPocket(delta) + ItemCodex[it.item]!!.effectWhileInPocket(delta) } else { // equipped - it.item.effectWhenEquipped(delta) + ItemCodex[it.item]!!.effectWhenEquipped(delta) } } } @@ -590,7 +591,7 @@ open class ActorHumanoid( // quickslot implementation if (key == AVKey.__PLAYER_QUICKSLOTSEL && value != null) { // ONLY FOR HAND_GRIPs!! - val quickBarItem = inventory.getQuickslot(actorValue.getAsInt(key)!!)?.item + val quickBarItem = ItemCodex[inventory.getQuickslot(actorValue.getAsInt(key)!!)?.item] if (quickBarItem != null && quickBarItem.equipPosition == GameItem.EquipPosition.HAND_GRIP) { equipItem(quickBarItem) diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt index 0cefaa677..526aedc7a 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt @@ -33,7 +33,7 @@ class ActorInventory(@Transient val actor: Pocketed, var maxCapacity: Int, var c /** * List of all equipped items (tools, armours, rings, necklaces, etc.) */ - val itemEquipped = Array(GameItem.EquipPosition.INDEX_MAX) { null } + val itemEquipped = Array(GameItem.EquipPosition.INDEX_MAX) { null } /** * Sorted by referenceID. @@ -46,7 +46,7 @@ class ActorInventory(@Transient val actor: Pocketed, var maxCapacity: Int, var c init { } - fun add(itemID: ItemID, count: Int = 1) = add(ItemCodex[itemID], count) + fun add(itemID: ItemID, count: Int = 1) = add(ItemCodex[itemID]!!, count) fun add(item: GameItem, count: Int = 1) { println("[ActorInventory] add $item, $count") @@ -86,12 +86,12 @@ class ActorInventory(@Transient val actor: Pocketed, var maxCapacity: Int, var c } // new item else { - itemList.add(InventoryPair(item, count)) + itemList.add(InventoryPair(item.dynamicID, count)) } insertionSortLastElem(itemList) } - fun remove(itemID: ItemID, count: Int) = remove(ItemCodex[itemID], count) + fun remove(itemID: ItemID, count: Int) = remove(ItemCodex[itemID]!!, count) /** Will check existence of the item using its Dynamic ID; careful with command order! * e.g. re-assign after this operation */ fun remove(item: GameItem, count: Int = 1) { @@ -152,7 +152,7 @@ class ActorInventory(@Transient val actor: Pocketed, var maxCapacity: Int, var c else getTotalCount().toDouble() - fun getTotalWeight(): Double = itemList.map { it.item.mass * it.amount }.sum() + fun getTotalWeight(): Double = itemList.map { ItemCodex[it.item]!!.mass * it.amount }.sum() /** * Real amount @@ -277,7 +277,10 @@ class ActorInventory(@Transient val actor: Pocketed, var maxCapacity: Int, var c while (low <= high) { val mid = (low + high).ushr(1) // safe from overflows - val midVal = if (searchBy == STATIC_ID) this.get(mid).item.originalID else this.get(mid).item.dynamicID + val midVal = if (searchBy == STATIC_ID) + ItemCodex[this[mid].item]!!.originalID + else + ItemCodex[this[mid].item]!!.dynamicID if (ID > midVal) low = mid + 1 @@ -290,4 +293,4 @@ class ActorInventory(@Transient val actor: Pocketed, var maxCapacity: Int, var c } } -data class InventoryPair(val item: GameItem, var amount: Int) \ No newline at end of file +data class InventoryPair(val item: ItemID, var amount: Int) \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/DroppedItem.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/DroppedItem.kt index aeae3d9bf..64e6bc6d1 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/DroppedItem.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/DroppedItem.kt @@ -1,10 +1,10 @@ package net.torvald.terrarum.modulebasegame.gameactors import com.badlogic.gdx.graphics.g2d.SpriteBatch -import net.torvald.terrarum.itemproperties.GameItem -import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.gameactors.ActorWBMovable +import net.torvald.terrarum.itemproperties.GameItem +import net.torvald.terrarum.itemproperties.ItemCodex /** * Created by minjaesong on 2016-03-15. @@ -20,9 +20,9 @@ open class DroppedItem(private val item: GameItem) : ActorWBMovable(RenderOrder. avBaseMass = if (item.dynamicID < BlockCodex.MAX_TERRAIN_TILES) BlockCodex[item.dynamicID].density / 1000.0 else - ItemCodex[item.dynamicID].mass + ItemCodex[item.dynamicID]!!.mass - scale = ItemCodex[item.dynamicID].scale + scale = ItemCodex[item.dynamicID]!!.scale } override fun update(delta: Float) { diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt index 78c5c8fe5..30f28a372 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt @@ -4,6 +4,7 @@ import net.torvald.terrarum.AppLoader import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.itemproperties.GameItem import net.torvald.terrarum.itemproperties.ItemCodex +import net.torvald.terrarum.itemproperties.ItemID /** * Created by minjaesong on 2016-01-15. @@ -31,6 +32,12 @@ interface Pocketed { item.effectOnUnequip(AppLoader.UPDATE_RATE.toFloat()) } + fun unequipItem(itemID: ItemID?) { + itemID?.let { + unequipItem(ItemCodex[itemID]) + } ?: return + } + // no need for equipSlot(Int) fun unequipSlot(slot: Int) { if (slot < 0 || slot > GameItem.EquipPosition.INDEX_MAX) @@ -49,19 +56,24 @@ interface Pocketed { } if (item.equipPosition >= 0) { - inventory.itemEquipped[item.equipPosition] = item + inventory.itemEquipped[item.equipPosition] = item.dynamicID item.effectWhenEquipped(AppLoader.UPDATE_RATE.toFloat()) } // else do nothing } - fun equipped(item: GameItem): Boolean { - return inventory.itemEquipped[item.equipPosition] == item + fun equipItem(itemID: ItemID) { + equipItem(ItemCodex[itemID]!!) } - fun addItem(itemID: Int, count: Int = 1) = inventory.add(ItemCodex[itemID], count) + fun equipped(item: GameItem): Boolean { + return inventory.itemEquipped[item.equipPosition] == item.dynamicID + } + fun equipped(itemID: ItemID) = equipped(ItemCodex[itemID]!!) + + fun addItem(itemID: Int, count: Int = 1) = inventory.add(ItemCodex[itemID]!!, count) fun addItem(item: GameItem, count: Int = 1) = inventory.add(item, count) - fun removeItem(itemID: Int, count: Int = 1) = inventory.remove(ItemCodex[itemID], count) + fun removeItem(itemID: Int, count: Int = 1) = inventory.remove(ItemCodex[itemID]!!, count) fun removeItem(item: GameItem, count: Int = 1) = inventory.remove(item, count) fun hasItem(item: GameItem) = inventory.contains(item.dynamicID) diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/ThreadActorUpdate.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ThreadActorUpdate.kt index 8a21419d4..674fedc6c 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/ThreadActorUpdate.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ThreadActorUpdate.kt @@ -2,6 +2,7 @@ package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.terrarum.AppLoader import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.itemproperties.ItemCodex /** * Created by minjaesong on 2016-05-25. @@ -14,9 +15,9 @@ class ThreadActorUpdate(val startIndex: Int, val endIndex: Int) : Runnable { if (it is Pocketed) { it.inventory.forEach { inventoryEntry -> - inventoryEntry.item.effectWhileInPocket(AppLoader.UPDATE_RATE.toFloat()) + ItemCodex[inventoryEntry.item]?.effectWhileInPocket(AppLoader.UPDATE_RATE.toFloat()) if (it.equipped(inventoryEntry.item)) { - inventoryEntry.item.effectWhenEquipped(AppLoader.UPDATE_RATE.toFloat()) + ItemCodex[inventoryEntry.item]?.effectWhenEquipped(AppLoader.UPDATE_RATE.toFloat()) } } } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/AmmoMeterProxy.kt b/src/net/torvald/terrarum/modulebasegame/ui/AmmoMeterProxy.kt index 8419b7211..e4b0df027 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/AmmoMeterProxy.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/AmmoMeterProxy.kt @@ -1,7 +1,8 @@ package net.torvald.terrarum.modulebasegame.ui -import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid import net.torvald.terrarum.itemproperties.GameItem +import net.torvald.terrarum.itemproperties.ItemCodex +import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid /** * Created by minjaesong on 2017-04-21. @@ -9,7 +10,7 @@ import net.torvald.terrarum.itemproperties.GameItem object AmmoMeterProxy { operator fun invoke(actor: ActorHumanoid, meter: UIVitalMetre) { - val currentItem = actor.inventory.itemEquipped[GameItem.EquipPosition.HAND_GRIP] + val currentItem = ItemCodex[actor.inventory.itemEquipped[GameItem.EquipPosition.HAND_GRIP]] if (currentItem == null) { meter.vitalGetterMax = { null } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt index 6c7bb1bb8..3ef6f063a 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt @@ -316,20 +316,20 @@ class UIItemInventoryDynamicList( // filter items inventory.forEach { - if (it.item.inventoryCategory == filter || filter == "__all__") + if (ItemCodex[it.item]!!.inventoryCategory == filter || filter == "__all__") inventorySortList.add(it) } // sort if needed // test sort by name - inventorySortList.sortBy { it.item.name } + inventorySortList.sortBy { ItemCodex[it.item]!!.name } // map sortList to item list for (k in 0 until items.size) { // we have an item try { val sortListItem = inventorySortList[k + itemPage * items.size] - items[k].item = sortListItem.item + items[k].item = ItemCodex[sortListItem.item] items[k].amount = sortListItem.amount items[k].itemImage = ItemCodex.getItemImage(sortListItem.item) @@ -346,7 +346,7 @@ class UIItemInventoryDynamicList( // set equippedslot number for (eq in 0 until inventory.itemEquipped.size) { if (eq < inventory.itemEquipped.size) { - if (inventory.itemEquipped[eq] == items[k].item) { + if (inventory.itemEquipped[eq] == items[k].item?.dynamicID) { items[k].equippedSlot = eq break } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt index 1ca814c9c..7de0a9970 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt @@ -132,9 +132,9 @@ class UIItemInventoryEquippedView( itemGrid[k].equippedSlot = null } else { - val itemRecord = inventory.getByDynamicID(item.dynamicID)!! + val itemRecord = inventory.getByDynamicID(item)!! - itemGrid[k].item = item + itemGrid[k].item = ItemCodex[item] itemGrid[k].amount = itemRecord.amount itemGrid[k].itemImage = ItemCodex.getItemImage(item) itemGrid[k].quickslot = null // don't need to be displayed diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt index dbd2d8840..ad22449fa 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt @@ -7,6 +7,7 @@ import net.torvald.terrarum.Second import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameworld.fmod +import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.ui.UICanvas @@ -46,7 +47,7 @@ class UIQuickslotBar : UICanvas() { override fun renderUI(batch: SpriteBatch, camera: Camera) { for (i in 0..SLOT_COUNT - 1) { - val item = (Terrarum.ingame!! as Ingame).actorNowPlaying?.inventory?.getQuickslot(i)?.item + val item = ItemCodex[(Terrarum.ingame!! as Ingame).actorNowPlaying?.inventory?.getQuickslot(i)?.item] val image = if (i == selection) ItemSlotImageFactory.produceLarge(false, (i + 1) % SLOT_COUNT, item) diff --git a/src/net/torvald/terrarum/modulebasegame/ui/uiQuickslotPie.kt b/src/net/torvald/terrarum/modulebasegame/ui/uiQuickslotPie.kt index 70509d3a7..598845cda 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/uiQuickslotPie.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/uiQuickslotPie.kt @@ -7,6 +7,7 @@ import com.jme3.math.FastMath import net.torvald.terrarum.Second import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameactors.AVKey +import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.modulebasegame.ui.UIQuickslotBar.Companion.COMMON_OPEN_CLOSE import net.torvald.terrarum.modulebasegame.ui.UIQuickslotBar.Companion.SLOT_COUNT @@ -62,7 +63,7 @@ class uiQuickslotPie : UICanvas() { override fun renderUI(batch: SpriteBatch, camera: Camera) { // draw radial thingies for (i in 0..slotCount - 1) { - val item = (Terrarum.ingame!! as Ingame).actorNowPlaying?.inventory?.getQuickslot(i)?.item + val item = ItemCodex[(Terrarum.ingame!! as Ingame).actorNowPlaying?.inventory?.getQuickslot(i)?.item] // set position val angle = Math.PI * 2.0 * (i.toDouble() / slotCount) + Math.PI // 180 deg monitor-wise