From 14887c711bb09da14057624e39444898323125bd Mon Sep 17 00:00:00 2001 From: Dennis Ploeger Date: Sun, 28 Nov 2021 15:38:02 +0100 Subject: [PATCH] fix: Safety guards for disconnects (#470) Co-authored-by: Dennis Ploeger --- .../game/scenes/inventory/inventory_ui.gd | 45 ++++++++++++++----- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/addons/escoria-core/game/scenes/inventory/inventory_ui.gd b/addons/escoria-core/game/scenes/inventory/inventory_ui.gd index c44d4c24..2dbe8055 100644 --- a/addons/escoria-core/game/scenes/inventory/inventory_ui.gd +++ b/addons/escoria-core/game/scenes/inventory/inventory_ui.gd @@ -91,31 +91,56 @@ func remove_item_by_id(item_id: String) -> void: if items_ids_in_inventory.has(item_id): var item_inventory_button = items_ids_in_inventory[item_id] - item_inventory_button.disconnect( + if item_inventory_button.is_connected( "mouse_left_inventory_item", escoria.inputs_manager, "_on_mouse_left_click_inventory_item" - ) - item_inventory_button.disconnect( + ): + item_inventory_button.disconnect( + "mouse_left_inventory_item", + escoria.inputs_manager, + "_on_mouse_left_click_inventory_item" + ) + if item_inventory_button.is_connected( "mouse_double_left_inventory_item", escoria.inputs_manager, "_on_mouse_double_left_click_inventory_item" - ) - item_inventory_button.disconnect( + ): + item_inventory_button.disconnect( + "mouse_double_left_inventory_item", + escoria.inputs_manager, + "_on_mouse_double_left_click_inventory_item" + ) + if item_inventory_button.is_connected( "mouse_right_inventory_item", escoria.inputs_manager, "_on_mouse_right_click_inventory_item" - ) - item_inventory_button.disconnect( + ): + item_inventory_button.disconnect( + "mouse_right_inventory_item", + escoria.inputs_manager, + "_on_mouse_right_click_inventory_item" + ) + if item_inventory_button.is_connected( "inventory_item_focused", escoria.inputs_manager, "_on_mouse_entered_inventory_item" - ) - item_inventory_button.disconnect( + ): + item_inventory_button.disconnect( + "inventory_item_focused", + escoria.inputs_manager, + "_on_mouse_entered_inventory_item" + ) + if item_inventory_button.is_connected( "inventory_item_unfocused", escoria.inputs_manager, "_on_mouse_exited_inventory_item" - ) + ): + item_inventory_button.disconnect( + "inventory_item_unfocused", + escoria.inputs_manager, + "_on_mouse_exited_inventory_item" + ) get_node(inventory_ui_container).remove_item(item_inventory_button) items_ids_in_inventory.erase(item_id)