mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-06 08:38:30 +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) {
|
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
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user