From 78cf9298e1e93f31f1b4da455a2c3a054cdd1f81 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Wed, 23 Jan 2019 00:50:20 +0900 Subject: [PATCH] equipped items are drawn into their respective slot --- .../spriteanimation/SpriteAnimation.kt | 2 +- .../terrarum/itemproperties/GameItem.kt | 49 +++++++++++------- .../ui/UIItemInventoryEquippedView.kt | 51 +++++++++---------- 3 files changed, 55 insertions(+), 47 deletions(-) diff --git a/src/net/torvald/spriteanimation/SpriteAnimation.kt b/src/net/torvald/spriteanimation/SpriteAnimation.kt index 69af3eaf2..ed1534916 100644 --- a/src/net/torvald/spriteanimation/SpriteAnimation.kt +++ b/src/net/torvald/spriteanimation/SpriteAnimation.kt @@ -13,7 +13,7 @@ import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack class SpriteAnimation(val parentActor: ActorWBMovable) { - private lateinit var textureRegion: TextureRegionPack + lateinit var textureRegion: TextureRegionPack; private set var currentFrame = 0 var currentRow = 0 diff --git a/src/net/torvald/terrarum/itemproperties/GameItem.kt b/src/net/torvald/terrarum/itemproperties/GameItem.kt index 47273903b..2cf781a64 100644 --- a/src/net/torvald/terrarum/itemproperties/GameItem.kt +++ b/src/net/torvald/terrarum/itemproperties/GameItem.kt @@ -3,10 +3,10 @@ package net.torvald.terrarum.itemproperties import com.badlogic.gdx.graphics.Color import net.torvald.random.HQRNG import net.torvald.terrarum.ItemValue -import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory -import net.torvald.terrarum.modulebasegame.gameactors.Pocketed import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_DYNAMIC import net.torvald.terrarum.langpack.Lang +import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory +import net.torvald.terrarum.modulebasegame.gameactors.Pocketed typealias ItemID = Int @@ -207,28 +207,39 @@ abstract class GameItem : Comparable, Cloneable { object EquipPosition { @JvmStatic val NULL = -1 - @JvmStatic val ARMOUR = 0 // you can add alias to address something like LEGGINGS, BREASTPLATE, RINGS, NECKLACES, etc. - @JvmStatic val BODY_BACK = 1 // wings, jetpacks, etc. - @JvmStatic val BODY_BUFF2 = 2 - @JvmStatic val BODY_BUFF3 = 3 - @JvmStatic val BODY_BUFF4 = 4 - @JvmStatic val BODY_BUFF5 = 5 - @JvmStatic val BODY_BUFF6 = 6 - @JvmStatic val BODY_BUFF7 = 7 - @JvmStatic val BODY_BUFF8 = 8 - @JvmStatic val HAND_GRIP = 9 - @JvmStatic val HAND_GAUNTLET = 10 - @JvmStatic val HAND_BUFF2 = 11 - @JvmStatic val HAND_BUFF3 = 12 - @JvmStatic val HAND_BUFF4 = 13 + @JvmStatic val BODY_ARMOUR = 0 + @JvmStatic val BODY_BACKPACK = 1 // wings, jetpacks, etc. - @JvmStatic val FOOTWEAR = 14 + @JvmStatic val FOOTWEAR = 2 + @JvmStatic val HEADGEAR = 3 - @JvmStatic val HEADGEAR = 15 + @JvmStatic val HAND_GRIP = 4 + @JvmStatic val HAND_GAUNTLET = 5 - @JvmStatic val INDEX_MAX = 15 + @JvmStatic val BODY_BUFF1 = 6 + @JvmStatic val BODY_BUFF2 = 8 + @JvmStatic val BODY_BUFF3 = 10 + + @JvmStatic val HAND_BUFF1 = 7 + @JvmStatic val HAND_BUFF2 = 9 + @JvmStatic val HAND_BUFF3 = 11 + + // invisible from the inventory UI + // intended for semi-permanant (de)buff (e.g. lifetime achivement, curse) + // can be done with actorvalue and some more code, but it's easier to just make + // such (de)buffs as an item. + @JvmStatic val STIGMA_1 = 12 + @JvmStatic val STIGMA_2 = 13 + @JvmStatic val STIGMA_3 = 14 + @JvmStatic val STIGMA_4 = 15 + @JvmStatic val STIGMA_5 = 16 + @JvmStatic val STIGMA_6 = 17 + @JvmStatic val STIGMA_7 = 18 + @JvmStatic val STIGMA_8 = 19 + + @JvmStatic val INDEX_MAX = 19 } object Category { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt index fee89b207..ebba95aa7 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt @@ -60,6 +60,8 @@ class UIItemInventoryEquippedView( itemGrid.forEach { it.update(delta) } } + private val spriteDrawCol = Color(0xddddddff.toInt()) + override fun render(batch: SpriteBatch, camera: Camera) { // sprite background blendNormal(batch) @@ -74,51 +76,46 @@ class UIItemInventoryEquippedView( sprite?.let { blendNormal(batch) - it.render( - batch, + batch.color = spriteDrawCol + batch.draw( + it.textureRegion.get(0, 0), posX + (width - it.cellWidth).div(2).toFloat(), posY + (width - it.cellHeight).div(2).toFloat() - ) } + ) + } + + // TODO inscribe slot image on each cells HERE itemGrid.forEach { it.render(batch, camera) } } - internal fun rebuild() { - inventorySortList = inventory.itemEquipped.clone() - - - rebuildList = false // sort by equip position // fill the grid from fastest index, make no gap in-between of slots - var listPushCnt = 0 for (k in 0 until itemGrid.size) { - val it = inventorySortList[k] + val item = inventory.itemEquipped[k] - if (it != null) { - val itemRecord = inventory.getByDynamicID(it.dynamicID)!! + if (item == null) { - itemGrid[listPushCnt].item = it - itemGrid[listPushCnt].amount = itemRecord.amount - itemGrid[listPushCnt].itemImage = ItemCodex.getItemImage(it) - itemGrid[listPushCnt].quickslot = null // don't need to be displayed - itemGrid[listPushCnt].equippedSlot = null // don't need to be displayed - - listPushCnt++ + itemGrid[k].item = null + itemGrid[k].amount = 0 + itemGrid[k].itemImage = null + itemGrid[k].quickslot = null + itemGrid[k].equippedSlot = null } - } + else { + val itemRecord = inventory.getByDynamicID(item.dynamicID)!! - // empty out un-filled grids from previous garbage - for (m in listPushCnt until itemGrid.size) { - itemGrid[m].item = null - itemGrid[m].amount = 0 - itemGrid[m].itemImage = null - itemGrid[m].quickslot = null - itemGrid[m].equippedSlot = null + itemGrid[k].item = item + itemGrid[k].amount = itemRecord.amount + itemGrid[k].itemImage = ItemCodex.getItemImage(item) + itemGrid[k].quickslot = null // don't need to be displayed + itemGrid[k].equippedSlot = null // don't need to be displayed + } } }