@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