mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-18 06:24:06 +09:00
briefy showing item name to the quickslot when the selection has changed
This commit is contained in:
@@ -220,7 +220,7 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L
|
||||
ItemCodex[it.itm]!!.effectWhileInPocket(this, delta)
|
||||
}
|
||||
else { // equipped
|
||||
ItemCodex[it.itm]!!.effectWhenEquipped(this, delta)
|
||||
ItemCodex[it.itm]!!.effectWhileEquipped(this, delta)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,9 +27,14 @@ class ActorInventory() : FixtureInventory() {
|
||||
|
||||
/**
|
||||
* List of all equipped items (tools, armours, rings, necklaces, etc.)
|
||||
*
|
||||
* The ItemID must be `dynamicID`
|
||||
*/
|
||||
val itemEquipped = Array<ItemID?>(GameItem.EquipPosition.INDEX_MAX) { null }
|
||||
|
||||
/**
|
||||
* The ItemID must be `dynamicID`
|
||||
*/
|
||||
val quickSlot = Array<ItemID?>(UIQuickslotBar.SLOT_COUNT) { null } // 0: Slot 1, 9: Slot 10
|
||||
|
||||
|
||||
|
||||
@@ -164,23 +164,40 @@ class IngamePlayer : ActorHumanoid {
|
||||
return spriteHeadTexture
|
||||
}
|
||||
|
||||
override fun equipItem(item: GameItem) {
|
||||
super.equipItem(item)
|
||||
private var unequipNoSpriteUpdate = false
|
||||
|
||||
// TODO redraw sprite with held item sprite (use sprite joint "HELD_ITEM")
|
||||
if (item.equipPosition == GameItem.EquipPosition.HAND_GRIP) {
|
||||
override fun equipItem(item: GameItem) {
|
||||
val oldItemID = inventory.itemEquipped[item.equipPosition]
|
||||
|
||||
unequipNoSpriteUpdate = true
|
||||
super.equipItem(item) // also calls unequipItem internally
|
||||
|
||||
// redraw sprite with held item sprite (use sprite joint "HELD_ITEM")
|
||||
if (item.dynamicID != oldItemID && item.equipPosition == GameItem.EquipPosition.HAND_GRIP) {
|
||||
rebuildfun(item)
|
||||
animDescGlow?.let { rebuildfunGlow(item) }
|
||||
}
|
||||
|
||||
unequipNoSpriteUpdate = false
|
||||
|
||||
// println("IngamePlayer.equipItem")
|
||||
// printStackTrace(this)
|
||||
}
|
||||
|
||||
override fun unequipItem(item: GameItem?) {
|
||||
super.unequipItem(item)
|
||||
|
||||
// redraw sprite without held item sprite (use sprite joint "HELD_ITEM")
|
||||
item?.let { item -> if (item.equipPosition == GameItem.EquipPosition.HAND_GRIP) {
|
||||
rebuildfun(null)
|
||||
animDescGlow?.let { rebuildfunGlow(null) }
|
||||
} }
|
||||
if (!unequipNoSpriteUpdate) {
|
||||
item?.let { item ->
|
||||
if (item.equipPosition == GameItem.EquipPosition.HAND_GRIP) {
|
||||
rebuildfun(null)
|
||||
animDescGlow?.let { rebuildfunGlow(null) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// println("IngamePlayer.unequipItem")
|
||||
// printStackTrace(this)
|
||||
}
|
||||
}
|
||||
@@ -57,17 +57,21 @@ interface Pocketed {
|
||||
* Equips an item. If the item is not in the inventory, adds the item first.
|
||||
*/
|
||||
fun equipItem(item: GameItem) {
|
||||
val oldItemID = inventory.itemEquipped[item.equipPosition]
|
||||
|
||||
if (!inventory.contains(item)) {
|
||||
println("[Pocketed] Item does not exist; adding one before equipped")
|
||||
inventory.add(item)
|
||||
}
|
||||
|
||||
// unequip item that's already there
|
||||
unequipSlot(item.equipPosition)
|
||||
if (item.dynamicID != oldItemID) {
|
||||
unequipSlot(item.equipPosition) // also fires effectOnUnequip unconditionally
|
||||
}
|
||||
|
||||
if (item.equipPosition >= 0) {
|
||||
inventory.itemEquipped[item.equipPosition] = item.dynamicID
|
||||
item.effectWhenEquipped(this as ActorWithBody, App.UPDATE_RATE)
|
||||
item.effectWhileEquipped(this as ActorWithBody, App.UPDATE_RATE)
|
||||
}
|
||||
// else do nothing
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user