mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 20:31:51 +09:00
equipped items are drawn into their respective slot
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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<GameItem>, 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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user