inventory refactor + inv ui interactable
This commit is contained in:
@@ -1,26 +1,27 @@
|
||||
extends HBoxContainer
|
||||
class_name InventoryGui
|
||||
|
||||
@export var inventory_item_scene : PackedScene
|
||||
@export var inventory_item_scene: PackedScene
|
||||
|
||||
var inventory_item_objects : Array[InventoryGuiItem]
|
||||
var inventory_item_objects: Array[InventoryGuiItem]
|
||||
|
||||
func update(inventory : Inventory):
|
||||
if len(inventory_item_objects) == 0 or len(inventory_item_objects) != inventory.size:
|
||||
func update(inventory: Inventory):
|
||||
if len(inventory_item_objects) == 0 or len(inventory_item_objects) != inventory.items.size():
|
||||
for o in inventory_item_objects:
|
||||
o.queue_free()
|
||||
inventory_item_objects = generate_inventory_item_objects(inventory.size)
|
||||
inventory_item_objects = generate_inventory_item_objects(inventory, inventory.items.size())
|
||||
|
||||
for i in range(inventory.size):
|
||||
inventory_item_objects[i].update(
|
||||
inventory.get_item(i),
|
||||
i == inventory.current_item_ind and inventory.get_item(i) != null
|
||||
)
|
||||
for i in range(inventory.items.size()):
|
||||
inventory_item_objects[i].update(inventory.get_item(i), i == inventory.current_item_ind)
|
||||
|
||||
func generate_inventory_item_objects(nb : int = 1) -> Array[InventoryGuiItem]:
|
||||
var objects : Array[InventoryGuiItem] = []
|
||||
func generate_inventory_item_objects(inventory: Inventory, nb: int = 1) -> Array[InventoryGuiItem]:
|
||||
var objects: Array[InventoryGuiItem] = []
|
||||
for i in range(nb):
|
||||
var o = inventory_item_scene.instantiate() as InventoryGuiItem
|
||||
add_child(o)
|
||||
objects.append(o)
|
||||
o.item_clicked.connect(func(): change_current_item_ind(inventory, i))
|
||||
return objects
|
||||
|
||||
func change_current_item_ind(inventory: Inventory, new_ind: int):
|
||||
inventory.set_current_item(new_ind)
|
||||
|
||||
Reference in New Issue
Block a user