28 lines
1014 B
GDScript
28 lines
1014 B
GDScript
extends HBoxContainer
|
|
class_name InventoryGui
|
|
|
|
@export var inventory_item_scene: PackedScene
|
|
|
|
var inventory_item_objects: Array[InventoryGuiItem]
|
|
|
|
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, inventory.items.size())
|
|
|
|
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(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)
|