tools separated in inv

This commit is contained in:
Altaezio
2026-02-15 19:32:21 +01:00
parent f1acb6e3e9
commit fadf0cb769
13 changed files with 171 additions and 80 deletions

View File

@@ -1,9 +1,10 @@
[gd_scene load_steps=3 format=3 uid="uid://clicjf8ts51h8"]
[gd_scene format=3 uid="uid://clicjf8ts51h8"]
[ext_resource type="Script" uid="uid://dplbbs2dlq308" path="res://gui/game/inventory_gui/scripts/inventory_gui.gd" id="1_himlj"]
[ext_resource type="PackedScene" uid="uid://dadihouw8o3jx" path="res://gui/game/inventory_gui/inventory_item/inventory_gui_item.tscn" id="2_0vvyy"]
[ext_resource type="Texture2D" uid="uid://dw80a4c5iekir" path="res://common/icons/bar.png" id="3_hqvrf"]
[node name="Inventory" type="HBoxContainer"]
[node name="Inventory" type="HBoxContainer" unique_id=1144799110 node_paths=PackedStringArray("bar")]
custom_minimum_size = Vector2(48, 48)
offset_right = 156.0
offset_bottom = 153.0
@@ -11,3 +12,8 @@ size_flags_horizontal = 0
size_flags_vertical = 0
script = ExtResource("1_himlj")
inventory_item_scene = ExtResource("2_0vvyy")
bar = NodePath("Bar")
[node name="Bar" type="TextureRect" parent="." unique_id=60027067]
layout_mode = 2
texture = ExtResource("3_hqvrf")

View File

@@ -2,30 +2,35 @@ extends HBoxContainer
class_name InventoryGui
@export var inventory_item_scene: PackedScene
@export var bar: TextureRect
var inventory_item_objects: Array[InventoryGuiItem]
func _ready():
GameInfo.game_data.player_data.inventory.updated.connect(update)
update(GameInfo.game_data.player_data.inventory)
GameInfo.game_data.player_data.inventory.updated.connect(update)
update(GameInfo.game_data.player_data.inventory)
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())
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)
for i in range(inventory.items.size()):
inventory_item_objects[i].update(inventory.get_item(i), i == inventory.current_item_ind)
move_child(bar, inventory.n_tools)
bar.visible = inventory.n_tools > 0 && inventory.items.size() > inventory.n_tools
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
var objects: Array[InventoryGuiItem] = []
for i in range(nb):
var o = inventory_item_scene.instantiate() as InventoryGuiItem
add_child(o)
move_child(o, i)
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)
inventory.set_current_item(new_ind)