equipped items are drawn into their respective slot

This commit is contained in:
minjaesong
2019-01-23 00:50:20 +09:00
parent 12b42799e1
commit 78cf9298e1
3 changed files with 55 additions and 47 deletions

View File

@@ -13,7 +13,7 @@ import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
class SpriteAnimation(val parentActor: ActorWBMovable) { class SpriteAnimation(val parentActor: ActorWBMovable) {
private lateinit var textureRegion: TextureRegionPack lateinit var textureRegion: TextureRegionPack; private set
var currentFrame = 0 var currentFrame = 0
var currentRow = 0 var currentRow = 0

View File

@@ -3,10 +3,10 @@ package net.torvald.terrarum.itemproperties
import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Color
import net.torvald.random.HQRNG import net.torvald.random.HQRNG
import net.torvald.terrarum.ItemValue 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.itemproperties.ItemCodex.ITEM_DYNAMIC
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory
import net.torvald.terrarum.modulebasegame.gameactors.Pocketed
typealias ItemID = Int typealias ItemID = Int
@@ -207,28 +207,39 @@ abstract class GameItem : Comparable<GameItem>, Cloneable {
object EquipPosition { object EquipPosition {
@JvmStatic val NULL = -1 @JvmStatic val NULL = -1
@JvmStatic val ARMOUR = 0
// you can add alias to address something like LEGGINGS, BREASTPLATE, RINGS, NECKLACES, etc. // 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 BODY_ARMOUR = 0
@JvmStatic val HAND_GAUNTLET = 10 @JvmStatic val BODY_BACKPACK = 1 // wings, jetpacks, etc.
@JvmStatic val HAND_BUFF2 = 11
@JvmStatic val HAND_BUFF3 = 12
@JvmStatic val HAND_BUFF4 = 13
@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 { object Category {

View File

@@ -60,6 +60,8 @@ class UIItemInventoryEquippedView(
itemGrid.forEach { it.update(delta) } itemGrid.forEach { it.update(delta) }
} }
private val spriteDrawCol = Color(0xddddddff.toInt())
override fun render(batch: SpriteBatch, camera: Camera) { override fun render(batch: SpriteBatch, camera: Camera) {
// sprite background // sprite background
blendNormal(batch) blendNormal(batch)
@@ -74,51 +76,46 @@ class UIItemInventoryEquippedView(
sprite?.let { sprite?.let {
blendNormal(batch) blendNormal(batch)
it.render( batch.color = spriteDrawCol
batch, batch.draw(
it.textureRegion.get(0, 0),
posX + (width - it.cellWidth).div(2).toFloat(), posX + (width - it.cellWidth).div(2).toFloat(),
posY + (width - it.cellHeight).div(2).toFloat() posY + (width - it.cellHeight).div(2).toFloat()
) } )
}
// TODO inscribe slot image on each cells HERE
itemGrid.forEach { it.render(batch, camera) } itemGrid.forEach { it.render(batch, camera) }
} }
internal fun rebuild() { internal fun rebuild() {
inventorySortList = inventory.itemEquipped.clone()
rebuildList = false rebuildList = false
// sort by equip position // sort by equip position
// fill the grid from fastest index, make no gap in-between of slots // fill the grid from fastest index, make no gap in-between of slots
var listPushCnt = 0
for (k in 0 until itemGrid.size) { for (k in 0 until itemGrid.size) {
val it = inventorySortList[k] val item = inventory.itemEquipped[k]
if (it != null) { if (item == null) {
val itemRecord = inventory.getByDynamicID(it.dynamicID)!!
itemGrid[listPushCnt].item = it itemGrid[k].item = null
itemGrid[listPushCnt].amount = itemRecord.amount itemGrid[k].amount = 0
itemGrid[listPushCnt].itemImage = ItemCodex.getItemImage(it) itemGrid[k].itemImage = null
itemGrid[listPushCnt].quickslot = null // don't need to be displayed itemGrid[k].quickslot = null
itemGrid[listPushCnt].equippedSlot = null // don't need to be displayed itemGrid[k].equippedSlot = null
listPushCnt++
} }
} else {
val itemRecord = inventory.getByDynamicID(item.dynamicID)!!
// empty out un-filled grids from previous garbage itemGrid[k].item = item
for (m in listPushCnt until itemGrid.size) { itemGrid[k].amount = itemRecord.amount
itemGrid[m].item = null itemGrid[k].itemImage = ItemCodex.getItemImage(item)
itemGrid[m].amount = 0 itemGrid[k].quickslot = null // don't need to be displayed
itemGrid[m].itemImage = null itemGrid[k].equippedSlot = null // don't need to be displayed
itemGrid[m].quickslot = null }
itemGrid[m].equippedSlot = null
} }
} }