From 76b32c00696759be9ac25245cb469e7177a92b77 Mon Sep 17 00:00:00 2001 From: Eduardo Date: Mon, 5 Aug 2024 14:25:08 +0200 Subject: [PATCH] formated files (spaces to tabs) --- addons/gloot/ui/ctrl_inventory.gd | 221 +++++++------ addons/gloot/ui/ctrl_inventory_grid.gd | 427 ++++++++++++------------- 2 files changed, 323 insertions(+), 325 deletions(-) diff --git a/addons/gloot/ui/ctrl_inventory.gd b/addons/gloot/ui/ctrl_inventory.gd index facc1ec..c306bfa 100644 --- a/addons/gloot/ui/ctrl_inventory.gd +++ b/addons/gloot/ui/ctrl_inventory.gd @@ -9,189 +9,188 @@ signal inventory_item_context_activated(item) enum SelectMode {SELECT_SINGLE = ItemList.SELECT_SINGLE, SELECT_MULTI = ItemList.SELECT_MULTI} @export var inventory_path: NodePath : - set(new_inv_path): - inventory_path = new_inv_path - var node: Node = get_node_or_null(inventory_path) + set(new_inv_path): + inventory_path = new_inv_path + var node: Node = get_node_or_null(inventory_path) - if node == null: - return + if node == null: + return - if is_inside_tree(): - assert(node is Inventory) - - inventory = node - update_configuration_warnings() + if is_inside_tree(): + assert(node is Inventory) + + inventory = node + update_configuration_warnings() @export var default_item_icon: Texture2D @export_enum("Single", "Multi") var select_mode: int = SelectMode.SELECT_SINGLE : - set(new_select_mode): - if select_mode == new_select_mode: - return - select_mode = new_select_mode - if is_instance_valid(_item_list): - _item_list.deselect_all(); - _item_list.select_mode = select_mode + set(new_select_mode): + if select_mode == new_select_mode: + return + select_mode = new_select_mode + if is_instance_valid(_item_list): + _item_list.deselect_all(); + _item_list.select_mode = select_mode var inventory: Inventory = null : - set(new_inventory): - if new_inventory == inventory: - return - - _disconnect_inventory_signals() - inventory = new_inventory - _connect_inventory_signals() - - _queue_refresh() + set(new_inventory): + if new_inventory == inventory: + return + + _disconnect_inventory_signals() + inventory = new_inventory + _connect_inventory_signals() + + _queue_refresh() var _vbox_container: VBoxContainer var _item_list: ItemList var _refresh_queued: bool = false func _get_configuration_warnings() -> PackedStringArray: - if inventory_path.is_empty(): - return PackedStringArray([ - "This node is not linked to an inventory, so it can't display any content.\n" + \ - "Set the inventory_path property to point to an Inventory node."]) - return PackedStringArray() + if inventory_path.is_empty(): + return PackedStringArray([ + "This node is not linked to an inventory, so it can't display any content.\n" + \ + "Set the inventory_path property to point to an Inventory node."]) + return PackedStringArray() func _ready(): - if Engine.is_editor_hint(): - # Clean up, in case it is duplicated in the editor - if is_instance_valid(_vbox_container): - _vbox_container.queue_free() + if Engine.is_editor_hint(): + # Clean up, in case it is duplicated in the editor + if is_instance_valid(_vbox_container): + _vbox_container.queue_free() - _vbox_container = VBoxContainer.new() - _vbox_container.size_flags_horizontal = SIZE_EXPAND_FILL - _vbox_container.size_flags_vertical = SIZE_EXPAND_FILL - _vbox_container.anchor_right = 1.0 - _vbox_container.anchor_bottom = 1.0 - add_child(_vbox_container) + _vbox_container = VBoxContainer.new() + _vbox_container.size_flags_horizontal = SIZE_EXPAND_FILL + _vbox_container.size_flags_vertical = SIZE_EXPAND_FILL + _vbox_container.anchor_right = 1.0 + _vbox_container.anchor_bottom = 1.0 + add_child(_vbox_container) - _item_list = ItemList.new() - _item_list.size_flags_horizontal = SIZE_EXPAND_FILL - _item_list.size_flags_vertical = SIZE_EXPAND_FILL - _item_list.item_activated.connect(_on_list_item_activated) - _item_list.item_clicked.connect(_on_list_item_clicked) - _item_list.select_mode = select_mode - _vbox_container.add_child(_item_list) + _item_list = ItemList.new() + _item_list.size_flags_horizontal = SIZE_EXPAND_FILL + _item_list.size_flags_vertical = SIZE_EXPAND_FILL + _item_list.item_activated.connect(_on_list_item_activated) + _item_list.item_clicked.connect(_on_list_item_clicked) + _item_list.select_mode = select_mode + _vbox_container.add_child(_item_list) - if has_node(inventory_path): - inventory = get_node(inventory_path) + if has_node(inventory_path): + inventory = get_node(inventory_path) - _queue_refresh() + _queue_refresh() func _connect_inventory_signals() -> void: - if !is_instance_valid(inventory): - return + if !is_instance_valid(inventory): + return - if !inventory.contents_changed.is_connected(_queue_refresh): - inventory.contents_changed.connect(_queue_refresh) - if !inventory.item_property_changed.is_connected(_on_item_property_changed): - inventory.item_property_changed.connect(_on_item_property_changed) + if !inventory.contents_changed.is_connected(_queue_refresh): + inventory.contents_changed.connect(_queue_refresh) + if !inventory.item_property_changed.is_connected(_on_item_property_changed): + inventory.item_property_changed.connect(_on_item_property_changed) func _disconnect_inventory_signals() -> void: - if !is_instance_valid(inventory): - return + if !is_instance_valid(inventory): + return - if inventory.contents_changed.is_connected(_queue_refresh): - inventory.contents_changed.disconnect(_queue_refresh) - if inventory.item_property_changed.is_connected(_on_item_property_changed): - inventory.item_property_changed.disconnect(_on_item_property_changed) + if inventory.contents_changed.is_connected(_queue_refresh): + inventory.contents_changed.disconnect(_queue_refresh) + if inventory.item_property_changed.is_connected(_on_item_property_changed): + inventory.item_property_changed.disconnect(_on_item_property_changed) func _on_list_item_activated(index: int) -> void: - inventory_item_activated.emit(_get_inventory_item(index)) + inventory_item_activated.emit(_get_inventory_item(index)) func _on_list_item_clicked(index: int, at_position: Vector2, mouse_button_index: int) -> void: - if mouse_button_index == MOUSE_BUTTON_RIGHT: - inventory_item_context_activated.emit(_get_inventory_item(index)) + if mouse_button_index == MOUSE_BUTTON_RIGHT: + inventory_item_context_activated.emit(_get_inventory_item(index)) func _on_item_property_changed(_item: InventoryItem, property_name: String) -> void: - if property_name in [InventoryItem.KEY_NAME, InventoryItem.KEY_IMAGE]: - _queue_refresh() + if property_name in [InventoryItem.KEY_NAME, InventoryItem.KEY_IMAGE]: + _queue_refresh() func _process(_delta) -> void: - if _refresh_queued: - _refresh() - _refresh_queued = false + if _refresh_queued: + _refresh() + _refresh_queued = false func _queue_refresh() -> void: - _refresh_queued = true + _refresh_queued = true func _refresh() -> void: - if is_inside_tree(): - _clear_list() - _populate_list() + if is_inside_tree(): + _clear_list() + _populate_list() func _clear_list() -> void: - if is_instance_valid(_item_list): - _item_list.clear() + if is_instance_valid(_item_list): + _item_list.clear() func _populate_list() -> void: - if !is_instance_valid(inventory): - return + if !is_instance_valid(inventory): + return - for item in inventory.get_items(): - var texture := item.get_texture() - if !texture: - texture = default_item_icon - _item_list.add_item(_get_item_title(item), texture) - _item_list.set_item_metadata(_item_list.get_item_count() - 1, item) + for item in inventory.get_items(): + var texture := item.get_texture() + if !texture: + texture = default_item_icon + _item_list.add_item(_get_item_title(item), texture) + _item_list.set_item_metadata(_item_list.get_item_count() - 1, item) func _get_item_title(item: InventoryItem) -> String: - if item == null: - return "" + if item == null: + return "" - var title = item.get_title() - var stack_size: int = InventoryStacked.get_item_stack_size(item) - if stack_size > 1: - title = "%s (x%d)" % [title, stack_size] + var title = item.get_title() + var stack_size: int = InventoryStacked.get_item_stack_size(item) + if stack_size > 1: + title = "%s (x%d)" % [title, stack_size] - return title + return title func get_selected_inventory_item() -> InventoryItem: - if _item_list.get_selected_items().is_empty(): - return null + if _item_list.get_selected_items().is_empty(): + return null - return _get_inventory_item(_item_list.get_selected_items()[0]) + return _get_inventory_item(_item_list.get_selected_items()[0]) func get_selected_inventory_items() -> Array[InventoryItem]: - var result: Array[InventoryItem] - var indexes = _item_list.get_selected_items() - for i in indexes: - result.append(_get_inventory_item(i)) - return result + var result: Array[InventoryItem] + var indexes = _item_list.get_selected_items() + for i in indexes: + result.append(_get_inventory_item(i)) + return result func _get_inventory_item(index: int) -> InventoryItem: - assert(index >= 0) - assert(index < _item_list.get_item_count()) + assert(index >= 0) + assert(index < _item_list.get_item_count()) - return _item_list.get_item_metadata(index) + return _item_list.get_item_metadata(index) func deselect_inventory_item() -> void: - _item_list.deselect_all() + _item_list.deselect_all() func select_inventory_item(item: InventoryItem) -> void: - _item_list.deselect_all() - for index in _item_list.item_count: - if _item_list.get_item_metadata(index) != item: - continue - _item_list.select(index) - return - + _item_list.deselect_all() + for index in _item_list.item_count: + if _item_list.get_item_metadata(index) != item: + continue + _item_list.select(index) + return diff --git a/addons/gloot/ui/ctrl_inventory_grid.gd b/addons/gloot/ui/ctrl_inventory_grid.gd index d7fbb76..09e6372 100644 --- a/addons/gloot/ui/ctrl_inventory_grid.gd +++ b/addons/gloot/ui/ctrl_inventory_grid.gd @@ -13,119 +13,119 @@ signal item_mouse_exited(item) const CtrlInventoryGridBasic = preload("res://addons/gloot/ui/ctrl_inventory_grid_basic.gd") class GridControl extends Control: - var color: Color = Color.BLACK : - set(new_color): - if new_color == color: - return - color = new_color - queue_redraw() - var dimensions: Vector2i = Vector2i.ZERO : - set(new_dimensions): - if new_dimensions == dimensions: - return - dimensions = new_dimensions - queue_redraw() - - func _init(color_: Color, dimensions_: Vector2i) -> void: - color = color_ - dimensions = dimensions_ - - func _draw() -> void: - var rect = Rect2(Vector2.ZERO, size) - draw_rect(rect, color, false) - - if dimensions.x < 1 || dimensions.y < 1: - return - - for i in range(1, dimensions.x): - var from: Vector2 = Vector2(i * size.x / dimensions.x, 0) - var to: Vector2 = Vector2(i * size.x / dimensions.x, size.y) - draw_line(from, to, color) - for j in range(1, dimensions.y): - var from: Vector2 = Vector2(0, j * size.y / dimensions.y) - var to: Vector2 = Vector2(size.x, j * size.y / dimensions.y) - draw_line(from, to, color) - + var color: Color = Color.BLACK : + set(new_color): + if new_color == color: + return + color = new_color + queue_redraw() + var dimensions: Vector2i = Vector2i.ZERO : + set(new_dimensions): + if new_dimensions == dimensions: + return + dimensions = new_dimensions + queue_redraw() + + func _init(color_: Color, dimensions_: Vector2i) -> void: + color = color_ + dimensions = dimensions_ + + func _draw() -> void: + var rect = Rect2(Vector2.ZERO, size) + draw_rect(rect, color, false) + + if dimensions.x < 1 || dimensions.y < 1: + return + + for i in range(1, dimensions.x): + var from: Vector2 = Vector2(i * size.x / dimensions.x, 0) + var to: Vector2 = Vector2(i * size.x / dimensions.x, size.y) + draw_line(from, to, color) + for j in range(1, dimensions.y): + var from: Vector2 = Vector2(0, j * size.y / dimensions.y) + var to: Vector2 = Vector2(size.x, j * size.y / dimensions.y) + draw_line(from, to, color) + @export var inventory_path: NodePath : - set(new_inv_path): - if new_inv_path == inventory_path: - return - inventory_path = new_inv_path - var node: Node = get_node_or_null(inventory_path) - - if node == null: - return - - if is_inside_tree(): - assert(node is InventoryGrid) - - inventory = node - update_configuration_warnings() + set(new_inv_path): + if new_inv_path == inventory_path: + return + inventory_path = new_inv_path + var node: Node = get_node_or_null(inventory_path) + + if node == null: + return + + if is_inside_tree(): + assert(node is InventoryGrid) + + inventory = node + update_configuration_warnings() @export var default_item_texture: Texture2D : - set(new_default_item_texture): - if is_instance_valid(_ctrl_inventory_grid_basic): - _ctrl_inventory_grid_basic.default_item_texture = new_default_item_texture - default_item_texture = new_default_item_texture + set(new_default_item_texture): + if is_instance_valid(_ctrl_inventory_grid_basic): + _ctrl_inventory_grid_basic.default_item_texture = new_default_item_texture + default_item_texture = new_default_item_texture @export var stretch_item_sprites: bool = true : - set(new_stretch_item_sprites): - if is_instance_valid(_ctrl_inventory_grid_basic): - _ctrl_inventory_grid_basic.stretch_item_sprites = new_stretch_item_sprites - stretch_item_sprites = new_stretch_item_sprites + set(new_stretch_item_sprites): + if is_instance_valid(_ctrl_inventory_grid_basic): + _ctrl_inventory_grid_basic.stretch_item_sprites = new_stretch_item_sprites + stretch_item_sprites = new_stretch_item_sprites @export var field_dimensions: Vector2 = Vector2(32, 32) : - set(new_field_dimensions): - if is_instance_valid(_ctrl_inventory_grid_basic): - _ctrl_inventory_grid_basic.field_dimensions = new_field_dimensions - field_dimensions = new_field_dimensions + set(new_field_dimensions): + if is_instance_valid(_ctrl_inventory_grid_basic): + _ctrl_inventory_grid_basic.field_dimensions = new_field_dimensions + field_dimensions = new_field_dimensions @export var item_spacing: int = 0 : - set(new_item_spacing): - if is_instance_valid(_ctrl_inventory_grid_basic): - _ctrl_inventory_grid_basic.item_spacing = new_item_spacing - item_spacing = new_item_spacing + set(new_item_spacing): + if is_instance_valid(_ctrl_inventory_grid_basic): + _ctrl_inventory_grid_basic.item_spacing = new_item_spacing + item_spacing = new_item_spacing @export var draw_grid: bool = true : - set(new_draw_grid): - if new_draw_grid == draw_grid: - return - draw_grid = new_draw_grid - _queue_refresh() + set(new_draw_grid): + if new_draw_grid == draw_grid: + return + draw_grid = new_draw_grid + _queue_refresh() @export var grid_color: Color = Color.BLACK : - set(new_grid_color): - if(new_grid_color == grid_color): - return - grid_color = new_grid_color - _queue_refresh() + set(new_grid_color): + if(new_grid_color == grid_color): + return + grid_color = new_grid_color + _queue_refresh() @export var draw_selections: bool = false : - set(new_draw_selections): - if new_draw_selections == draw_selections: - return - draw_selections = new_draw_selections - _queue_refresh() + set(new_draw_selections): + if new_draw_selections == draw_selections: + return + draw_selections = new_draw_selections + _queue_refresh() @export var selection_color: Color = Color.GRAY : - set(new_selection_color): - if(new_selection_color == selection_color): - return - selection_color = new_selection_color - _queue_refresh() + set(new_selection_color): + if(new_selection_color == selection_color): + return + selection_color = new_selection_color + _queue_refresh() @export_enum("Single", "Multi") var select_mode: int = CtrlInventoryGridBasic.SelectMode.SELECT_SINGLE : - set(new_select_mode): - if select_mode == new_select_mode: - return - select_mode = new_select_mode - if is_instance_valid(_ctrl_inventory_grid_basic): - _ctrl_inventory_grid_basic.select_mode = select_mode + set(new_select_mode): + if select_mode == new_select_mode: + return + select_mode = new_select_mode + if is_instance_valid(_ctrl_inventory_grid_basic): + _ctrl_inventory_grid_basic.select_mode = select_mode var inventory: InventoryGrid = null : - set(new_inventory): - if inventory == new_inventory: - return + set(new_inventory): + if inventory == new_inventory: + return - _disconnect_inventory_signals() - inventory = new_inventory - _connect_inventory_signals() + _disconnect_inventory_signals() + inventory = new_inventory + _connect_inventory_signals() - if is_instance_valid(_ctrl_inventory_grid_basic): - _ctrl_inventory_grid_basic.inventory = inventory - _queue_refresh() + if is_instance_valid(_ctrl_inventory_grid_basic): + _ctrl_inventory_grid_basic.inventory = inventory + _queue_refresh() var _ctrl_grid: GridControl = null var _ctrl_selection: Control = null @@ -134,161 +134,160 @@ var _refresh_queued: bool = false func _connect_inventory_signals() -> void: - if !is_instance_valid(inventory): - return - if !inventory.contents_changed.is_connected(_queue_refresh): - inventory.contents_changed.connect(_queue_refresh) - if !inventory.size_changed.is_connected(_on_inventory_resized): - inventory.size_changed.connect(_on_inventory_resized) + if !is_instance_valid(inventory): + return + if !inventory.contents_changed.is_connected(_queue_refresh): + inventory.contents_changed.connect(_queue_refresh) + if !inventory.size_changed.is_connected(_on_inventory_resized): + inventory.size_changed.connect(_on_inventory_resized) func _disconnect_inventory_signals() -> void: - if !is_instance_valid(inventory): - return - if inventory.contents_changed.is_connected(_queue_refresh): - inventory.contents_changed.disconnect(_queue_refresh) - if inventory.size_changed.is_connected(_on_inventory_resized): - inventory.size_changed.disconnect(_on_inventory_resized) + if !is_instance_valid(inventory): + return + if inventory.contents_changed.is_connected(_queue_refresh): + inventory.contents_changed.disconnect(_queue_refresh) + if inventory.size_changed.is_connected(_on_inventory_resized): + inventory.size_changed.disconnect(_on_inventory_resized) func _on_inventory_resized() -> void: - _queue_refresh() + _queue_refresh() func _get_configuration_warnings() -> PackedStringArray: - if inventory_path.is_empty(): - return PackedStringArray([ - "This node is not linked to an inventory and can't display any content.\n" + \ - "Set the inventory_path property to point to an InventoryGrid node."]) - return PackedStringArray() + if inventory_path.is_empty(): + return PackedStringArray([ + "This node is not linked to an inventory and can't display any content.\n" + \ + "Set the inventory_path property to point to an InventoryGrid node."]) + return PackedStringArray() func _ready() -> void: - if Engine.is_editor_hint(): - # Clean up, in case it is duplicated in the editor - if is_instance_valid(_ctrl_inventory_grid_basic): - _ctrl_inventory_grid_basic.queue_free() - _ctrl_grid.queue_free() - _ctrl_selection.queue_free() - - if has_node(inventory_path): - inventory = get_node_or_null(inventory_path) - - _ctrl_inventory_grid_basic = CtrlInventoryGridBasic.new() - _ctrl_inventory_grid_basic.inventory = inventory - _ctrl_inventory_grid_basic.field_dimensions = field_dimensions - _ctrl_inventory_grid_basic.item_spacing = item_spacing - _ctrl_inventory_grid_basic.default_item_texture = default_item_texture - _ctrl_inventory_grid_basic.stretch_item_sprites = stretch_item_sprites - _ctrl_inventory_grid_basic.name = "CtrlInventoryGridBasic" - _ctrl_inventory_grid_basic.resized.connect(_update_size) - _ctrl_inventory_grid_basic.select_mode = select_mode - - _ctrl_inventory_grid_basic.item_dropped.connect(func(item: InventoryItem, drop_position: Vector2): - item_dropped.emit(item, drop_position) - ) - _ctrl_inventory_grid_basic.selection_changed.connect(func(): - _queue_refresh() - selection_changed.emit() - ) - _ctrl_inventory_grid_basic.inventory_item_activated.connect(func(item: InventoryItem): - inventory_item_activated.emit(item) - ) - _ctrl_inventory_grid_basic.inventory_item_context_activated.connect(func(item: InventoryItem): - inventory_item_context_activated.emit(item) - ) - _ctrl_inventory_grid_basic.item_mouse_entered.connect(func(item: InventoryItem): item_mouse_entered.emit(item)) - _ctrl_inventory_grid_basic.item_mouse_exited.connect(func(item: InventoryItem): item_mouse_exited.emit(item)) - - _ctrl_grid = GridControl.new(grid_color, _get_inventory_dimensions()) - _ctrl_grid.color = grid_color - _ctrl_grid.dimensions = _get_inventory_dimensions() - _ctrl_grid.name = "CtrlGrid" - - _ctrl_selection = Control.new() - _ctrl_selection.visible = draw_selections - - add_child(_ctrl_grid) - add_child(_ctrl_selection) - add_child(_ctrl_inventory_grid_basic) - - _update_size() - _queue_refresh() + if Engine.is_editor_hint(): + # Clean up, in case it is duplicated in the editor + if is_instance_valid(_ctrl_inventory_grid_basic): + _ctrl_inventory_grid_basic.queue_free() + _ctrl_grid.queue_free() + _ctrl_selection.queue_free() + + if has_node(inventory_path): + inventory = get_node_or_null(inventory_path) + + _ctrl_inventory_grid_basic = CtrlInventoryGridBasic.new() + _ctrl_inventory_grid_basic.inventory = inventory + _ctrl_inventory_grid_basic.field_dimensions = field_dimensions + _ctrl_inventory_grid_basic.item_spacing = item_spacing + _ctrl_inventory_grid_basic.default_item_texture = default_item_texture + _ctrl_inventory_grid_basic.stretch_item_sprites = stretch_item_sprites + _ctrl_inventory_grid_basic.name = "CtrlInventoryGridBasic" + _ctrl_inventory_grid_basic.resized.connect(_update_size) + _ctrl_inventory_grid_basic.select_mode = select_mode + + _ctrl_inventory_grid_basic.item_dropped.connect(func(item: InventoryItem, drop_position: Vector2): + item_dropped.emit(item, drop_position) + ) + _ctrl_inventory_grid_basic.selection_changed.connect(func(): + _queue_refresh() + selection_changed.emit() + ) + _ctrl_inventory_grid_basic.inventory_item_activated.connect(func(item: InventoryItem): + inventory_item_activated.emit(item) + ) + _ctrl_inventory_grid_basic.inventory_item_context_activated.connect(func(item: InventoryItem): + inventory_item_context_activated.emit(item) + ) + _ctrl_inventory_grid_basic.item_mouse_entered.connect(func(item: InventoryItem): item_mouse_entered.emit(item)) + _ctrl_inventory_grid_basic.item_mouse_exited.connect(func(item: InventoryItem): item_mouse_exited.emit(item)) + + _ctrl_grid = GridControl.new(grid_color, _get_inventory_dimensions()) + _ctrl_grid.color = grid_color + _ctrl_grid.dimensions = _get_inventory_dimensions() + _ctrl_grid.name = "CtrlGrid" + + _ctrl_selection = Control.new() + _ctrl_selection.visible = draw_selections + + add_child(_ctrl_grid) + add_child(_ctrl_selection) + add_child(_ctrl_inventory_grid_basic) + + _update_size() + _queue_refresh() func _process(_delta) -> void: - if _refresh_queued: - _refresh() - _refresh_queued = false + if _refresh_queued: + _refresh() + _refresh_queued = false func _refresh() -> void: - if is_instance_valid(_ctrl_grid): - _ctrl_grid.dimensions = _get_inventory_dimensions() - _ctrl_grid.color = grid_color - _ctrl_grid.visible = draw_grid - else: - _ctrl_grid.hide() - - if is_instance_valid(_ctrl_selection) && is_instance_valid(_ctrl_inventory_grid_basic): - for child in _ctrl_selection.get_children(): - child.queue_free() - for selected_inventory_item in _ctrl_inventory_grid_basic.get_selected_inventory_items(): - var rect := _ctrl_inventory_grid_basic.get_item_rect(selected_inventory_item) - var selection_rect := ColorRect.new() - selection_rect.color = selection_color - selection_rect.position = rect.position - selection_rect.size = rect.size - _ctrl_selection.add_child(selection_rect) - _ctrl_selection.visible = draw_selections + if is_instance_valid(_ctrl_grid): + _ctrl_grid.dimensions = _get_inventory_dimensions() + _ctrl_grid.color = grid_color + _ctrl_grid.visible = draw_grid + else: + _ctrl_grid.hide() + + if is_instance_valid(_ctrl_selection) && is_instance_valid(_ctrl_inventory_grid_basic): + for child in _ctrl_selection.get_children(): + child.queue_free() + for selected_inventory_item in _ctrl_inventory_grid_basic.get_selected_inventory_items(): + var rect := _ctrl_inventory_grid_basic.get_item_rect(selected_inventory_item) + var selection_rect := ColorRect.new() + selection_rect.color = selection_color + selection_rect.position = rect.position + selection_rect.size = rect.size + _ctrl_selection.add_child(selection_rect) + _ctrl_selection.visible = draw_selections func _queue_refresh() -> void: - _refresh_queued = true + _refresh_queued = true func _get_inventory_dimensions() -> Vector2i: - var inventory_grid = _get_inventory() - if !is_instance_valid(inventory_grid): - return Vector2i.ZERO - return _ctrl_inventory_grid_basic.inventory.size + var inventory_grid = _get_inventory() + if !is_instance_valid(inventory_grid): + return Vector2i.ZERO + return _ctrl_inventory_grid_basic.inventory.size func _update_size() -> void: - custom_minimum_size = _ctrl_inventory_grid_basic.size - size = _ctrl_inventory_grid_basic.size - _ctrl_grid.custom_minimum_size = _ctrl_inventory_grid_basic.size - _ctrl_grid.size = _ctrl_inventory_grid_basic.size + custom_minimum_size = _ctrl_inventory_grid_basic.size + size = _ctrl_inventory_grid_basic.size + _ctrl_grid.custom_minimum_size = _ctrl_inventory_grid_basic.size + _ctrl_grid.size = _ctrl_inventory_grid_basic.size func _get_inventory() -> InventoryGrid: - if !is_instance_valid(_ctrl_inventory_grid_basic): - return null - if !is_instance_valid(_ctrl_inventory_grid_basic.inventory): - return null - return _ctrl_inventory_grid_basic.inventory + if !is_instance_valid(_ctrl_inventory_grid_basic): + return null + if !is_instance_valid(_ctrl_inventory_grid_basic.inventory): + return null + return _ctrl_inventory_grid_basic.inventory func deselect_inventory_item() -> void: - if !is_instance_valid(_ctrl_inventory_grid_basic): - return - _ctrl_inventory_grid_basic.deselect_inventory_item() + if !is_instance_valid(_ctrl_inventory_grid_basic): + return + _ctrl_inventory_grid_basic.deselect_inventory_item() func select_inventory_item(item: InventoryItem) -> void: - if !is_instance_valid(_ctrl_inventory_grid_basic): - return - _ctrl_inventory_grid_basic.select_inventory_item(item) + if !is_instance_valid(_ctrl_inventory_grid_basic): + return + _ctrl_inventory_grid_basic.select_inventory_item(item) func get_selected_inventory_item() -> InventoryItem: - if !is_instance_valid(_ctrl_inventory_grid_basic): - return null - return _ctrl_inventory_grid_basic.get_selected_inventory_item() + if !is_instance_valid(_ctrl_inventory_grid_basic): + return null + return _ctrl_inventory_grid_basic.get_selected_inventory_item() func get_selected_inventory_items() -> Array[InventoryItem]: - if !is_instance_valid(_ctrl_inventory_grid_basic): - return [] - return _ctrl_inventory_grid_basic.get_selected_inventory_items() - + if !is_instance_valid(_ctrl_inventory_grid_basic): + return [] + return _ctrl_inventory_grid_basic.get_selected_inventory_items() -- 2.30.2