Files
seeding-planets/gui/game/inventory_gui/scripts/inventory_gui.gd

47 lines
1.6 KiB
GDScript

@tool
extends Control
class_name InventoryGui
const SEPARATOR_OBJECT_SIZE = 40
@export var test_size : int
@export var test_n_tool : int
var last_n_tools = -1
var last_inventory_size = 0
@export_tool_button("Test Update", "Callable") var update_action = func() : generate_inventory_mouse_detectors(test_size,test_n_tool,true)
func _ready():
if not Engine.is_editor_hint():
GameInfo.game_data.player_data.inventory.updated.connect(update)
update(GameInfo.game_data.player_data.inventory)
func update(inventory: Inventory):
if last_inventory_size != len(inventory.items) or last_n_tools != inventory.n_tools:
last_inventory_size = len(inventory.items)
last_n_tools = inventory.n_tools
generate_inventory_mouse_detectors(last_inventory_size, last_n_tools)
func generate_inventory_mouse_detectors(inventory_size: int, n_tool : int, test = false):
for c in %InventoryMouseDetectors.get_children():
c.queue_free()
for i in range(inventory_size):
if i == n_tool:
%InventoryMouseDetectors.add_child(generate_separator(test))
%InventoryMouseDetectors.add_child(generate_item_mouse_detector(i, test))
func generate_item_mouse_detector(index : int, test = false) -> ColorRect:
return InventoryGuiItemMouseDetector.new(index, test)
func generate_separator(test = false) -> ColorRect:
var separator = ColorRect.new()
separator.custom_minimum_size = Vector2(SEPARATOR_OBJECT_SIZE, SEPARATOR_OBJECT_SIZE)
separator.color = Color.RED
if test:
separator.color.a = 0.5
else :
separator.color.a = 0.
return separator