From 5e63ef45765224f1eadbfd1c5de29ee96181aef8 Mon Sep 17 00:00:00 2001 From: Oier Bravo Urtasun Date: Sat, 13 Sep 2025 17:14:02 +0200 Subject: [PATCH] Dev Tools --- .../escoria-ui-return-monkey-island/game.gd | 26 ++------ .../escoria-ui-return-monkey-island/game.tscn | 12 ++-- .../tools/dev/dev_tools.gd | 17 ++++++ .../tools/dev/dev_tools.gd.uid | 1 + .../tools/dev/dev_tools.tscn | 59 +++++++++++++++++++ .../tools/dev/global_inspector.gd | 23 ++++++++ .../tools/dev/global_inspector.gd.uid | 1 + .../tools/dev/global_inspector.tscn | 24 ++++++++ .../tools/dev/globals_watcher.gd | 21 +++++++ .../tools/dev/globals_watcher.gd.uid | 1 + .../tools/dev/globals_watcher.tscn | 28 +++++++++ .../tools/dev/ui/tool_toggle_button.gd | 15 +++++ .../tools/dev/ui/tool_toggle_button.gd.uid | 1 + project.godot | 27 +-------- 14 files changed, 205 insertions(+), 51 deletions(-) create mode 100644 addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.gd create mode 100644 addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.gd.uid create mode 100644 addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.tscn create mode 100644 addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.gd create mode 100644 addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.gd.uid create mode 100644 addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.tscn create mode 100644 addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.gd create mode 100644 addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.gd.uid create mode 100644 addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.tscn create mode 100644 addons/escoria-ui-return-monkey-island/tools/dev/ui/tool_toggle_button.gd create mode 100644 addons/escoria-ui-return-monkey-island/tools/dev/ui/tool_toggle_button.gd.uid diff --git a/addons/escoria-ui-return-monkey-island/game.gd b/addons/escoria-ui-return-monkey-island/game.gd index cfc7a85b..90ded8d9 100644 --- a/addons/escoria-ui-return-monkey-island/game.gd +++ b/addons/escoria-ui-return-monkey-island/game.gd @@ -105,22 +105,7 @@ func _ready(): func _enter_tree(): - var room_selector_parent = dev_tools_node - - if ESCProjectSettingsManager.get_setting(ESCProjectSettingsManager.ENABLE_ROOM_SELECTOR) \ - and room_selector_parent.get_node_or_null("room_select") == null: - - room_selector_parent.add_child( - preload( - "res://addons/escoria-core/ui_library/tools/room_select" +\ - "/room_select.tscn" - ).instantiate() - ) - var room_selector = room_selector_parent.get_node_or_null("room_select") - if(room_selector != null): - room_selector.visible = false - - + var input_handler = Callable(self, "_process_input") escoria.inputs_manager.register_custom_input_handler(input_handler) @@ -156,14 +141,13 @@ func _input(event: InputEvent) -> void: return if event.is_action_pressed("ui_cancel") && escoria.current_state == escoria.GAME_STATE.DEFAULT: request_pause_menu.emit() - if escoria.get_escoria().is_ready_for_inputs(): - if event.is_action_pressed("ui_show_room_selector"): - toggle_room_selector_visibility() - + if event is InputEventMouseMotion: _current_mouse_pos = get_viewport().get_mouse_position() update_tooltip_following_mouse_position(tooltip_node) - + + if event.is_action_pressed("ui_dev_tools"): + dev_tools_node.visible = !dev_tools_node.visible # https://github.com/godotengine/godot-demo-projects/blob/3.4-585455e/misc/joypads/joypads.gd diff --git a/addons/escoria-ui-return-monkey-island/game.tscn b/addons/escoria-ui-return-monkey-island/game.tscn index 26d1cc66..e8f46f95 100644 --- a/addons/escoria-ui-return-monkey-island/game.tscn +++ b/addons/escoria-ui-return-monkey-island/game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=22 format=3 uid="uid://cabos3cse6b71"] +[gd_scene load_steps=23 format=3 uid="uid://cabos3cse6b71"] [ext_resource type="PackedScene" uid="uid://bl50queikqfjc" path="res://addons/escoria-ui-return-monkey-island/inventory/inventory_ui.tscn" id="1"] [ext_resource type="Script" uid="uid://dfl7khtlretr7" path="res://addons/escoria-core/game/scenes/dialogs/esc_dialog_player.gd" id="2"] @@ -8,6 +8,7 @@ [ext_resource type="Texture2D" uid="uid://ce2rx8nm1s6gh" path="res://addons/escoria-ui-return-monkey-island/icons/music-double-note.svg" id="6"] [ext_resource type="Texture2D" uid="uid://d0ta8viehhtdj" path="res://addons/escoria-ui-return-monkey-island/icons/translation.svg" id="6_yfacq"] [ext_resource type="PackedScene" uid="uid://d3wdxi18u52c5" path="res://addons/escoria-ui-return-monkey-island/menus/main_menu/main_menu.tscn" id="7"] +[ext_resource type="PackedScene" uid="uid://yc6r8t73rwrc" path="res://addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.tscn" id="7_qk4ex"] [ext_resource type="Texture2D" uid="uid://dmtpxqpjt2hvh" path="res://addons/escoria-ui-return-monkey-island/icons/translation_hover.svg" id="7_we0hb"] [ext_resource type="PackedScene" uid="uid://dl7w8oqk1rmhw" path="res://addons/escoria-ui-return-monkey-island/menus/pause_menu/pause_menu.tscn" id="8"] [ext_resource type="Theme" uid="uid://bf2eet52fueam" path="res://addons/escoria-ui-return-monkey-island/theme/ui.tres" id="9"] @@ -29,10 +30,11 @@ shader_parameter/vignette_strength = 0.9 shader_parameter/dither_strength = 0.03 shader_parameter/vignette_color = Color(0, 0, 0, 1) -[node name="game" type="Node2D" node_paths=PackedStringArray("inventory_ui", "rtmi_tooltip_node")] +[node name="game" type="Node2D" node_paths=PackedStringArray("inventory_ui", "rtmi_tooltip_node", "dev_tools_node")] script = ExtResource("5") inventory_ui = NodePath("game_layer/ui_layer/Inventory") rtmi_tooltip_node = NodePath("game_layer/tooltip_layer/tooltip") +dev_tools_node = NodePath("game_layer/ui_layer/DevTools") main_menu = NodePath("menu_layer/main_menu") pause_menu = NodePath("menu_layer/pause_menu") mouse_tooltip_margin = 70.0 @@ -73,10 +75,8 @@ debug_mode = true [node name="ui_layer" type="CanvasLayer" parent="game_layer"] -[node name="DevTools" type="PanelContainer" parent="game_layer/ui_layer"] -offset_top = 622.0 -offset_right = 40.0 -offset_bottom = 662.0 +[node name="DevTools" parent="game_layer/ui_layer" instance=ExtResource("7_qk4ex")] +visible = false [node name="Tools" type="PanelContainer" parent="game_layer/ui_layer"] anchors_preset = 1 diff --git a/addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.gd b/addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.gd new file mode 100644 index 00000000..15b70cd6 --- /dev/null +++ b/addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.gd @@ -0,0 +1,17 @@ +extends PanelContainer + +var tools: Dictionary +@export var toolButtonContainer: Container + +func _ready() -> void: + if toolButtonContainer.get_child_count() == 0: + return + for child: DevToolToggleButton in toolButtonContainer.get_children(): + tools[child.tool_id] = child.tool_node + child.connect("toggle", func(tool_id): toggle_tool(tool_id)) + +func toggle_tool(toolId: String): + tools[toolId].visible = !tools[toolId].visible + for tool in tools: + if tool != toolId: + tools[tool].visible = false diff --git a/addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.gd.uid b/addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.gd.uid new file mode 100644 index 00000000..b6a757ca --- /dev/null +++ b/addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.gd.uid @@ -0,0 +1 @@ +uid://co3lr1fo4jcio diff --git a/addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.tscn b/addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.tscn new file mode 100644 index 00000000..b7544a08 --- /dev/null +++ b/addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.tscn @@ -0,0 +1,59 @@ +[gd_scene load_steps=6 format=3 uid="uid://yc6r8t73rwrc"] + +[ext_resource type="Script" uid="uid://co3lr1fo4jcio" path="res://addons/escoria-ui-return-monkey-island/tools/dev/dev_tools.gd" id="1_081at"] +[ext_resource type="PackedScene" uid="uid://ciyttd4u8lpfa" path="res://addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.tscn" id="1_wjhmu"] +[ext_resource type="Script" uid="uid://dmtnqjdnfeu2u" path="res://addons/escoria-ui-return-monkey-island/tools/dev/ui/tool_toggle_button.gd" id="2_op8os"] +[ext_resource type="PackedScene" uid="uid://dq6oyy5g2m03m" path="res://addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.tscn" id="3_rmud2"] +[ext_resource type="PackedScene" uid="uid://b0q36us3uuimq" path="res://addons/escoria-core/game/scenes/esc_prompt/esc_prompt_popup.tscn" id="4_gnply"] + +[node name="DevTools" type="PanelContainer" node_paths=PackedStringArray("toolButtonContainer")] +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("1_081at") +toolButtonContainer = NodePath("MarginContainer/VBoxContainer/Toolbar") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="Toolbar" type="HBoxContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 + +[node name="Watcher" type="Button" parent="MarginContainer/VBoxContainer/Toolbar" node_paths=PackedStringArray("tool_node")] +layout_mode = 2 +text = "Watcher" +script = ExtResource("2_op8os") +tool_id = "watcher" +tool_node = NodePath("../../ToolContainer/GlobalWatcher") +metadata/_custom_type_script = "uid://dmtnqjdnfeu2u" + +[node name="Inspector" type="Button" parent="MarginContainer/VBoxContainer/Toolbar" node_paths=PackedStringArray("tool_node")] +layout_mode = 2 +text = "Inspector" +script = ExtResource("2_op8os") +tool_id = "inspector" +tool_node = NodePath("../../ToolContainer/GlobalInspector") +metadata/_custom_type_script = "uid://dmtnqjdnfeu2u" + +[node name="Prompt" type="Button" parent="MarginContainer/VBoxContainer/Toolbar" node_paths=PackedStringArray("tool_node")] +layout_mode = 2 +text = "Prompt" +script = ExtResource("2_op8os") +tool_id = "prompt" +tool_node = NodePath("../../ToolContainer/esc_prompt_popup") +metadata/_custom_type_script = "uid://dmtnqjdnfeu2u" + +[node name="ToolContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 + +[node name="GlobalWatcher" parent="MarginContainer/VBoxContainer/ToolContainer" instance=ExtResource("1_wjhmu")] +visible = false +layout_mode = 2 + +[node name="GlobalInspector" parent="MarginContainer/VBoxContainer/ToolContainer" instance=ExtResource("3_rmud2")] +visible = false +layout_mode = 2 + +[node name="esc_prompt_popup" parent="MarginContainer/VBoxContainer/ToolContainer" instance=ExtResource("4_gnply")] diff --git a/addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.gd b/addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.gd new file mode 100644 index 00000000..a61e61be --- /dev/null +++ b/addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.gd @@ -0,0 +1,23 @@ +extends Control + +@export var labelContainer: Container + +func _ready() -> void: + escoria.globals_manager.global_changed.connect(_on_escoria_global_changed) + + +# React to changes to inventory globals +func _on_escoria_global_changed(global: String, old_value, new_value) -> void: + clear() + for variable_name in escoria.globals_manager._globals: + labelContainer.add_child(createLabel(variable_name,escoria.globals_manager._globals[variable_name] )) + +func clear(): + for child in labelContainer.get_children(): + labelContainer.remove_child(child) + child.queue_free() + +func createLabel(name: String, value) -> Label: + var label = Label.new() + label.text = "%s | %s" % [name,value] + return label diff --git a/addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.gd.uid b/addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.gd.uid new file mode 100644 index 00000000..c0f4c919 --- /dev/null +++ b/addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.gd.uid @@ -0,0 +1 @@ +uid://bxon8pf4raeid diff --git a/addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.tscn b/addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.tscn new file mode 100644 index 00000000..b6592207 --- /dev/null +++ b/addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=2 format=3 uid="uid://dq6oyy5g2m03m"] + +[ext_resource type="Script" uid="uid://bxon8pf4raeid" path="res://addons/escoria-ui-return-monkey-island/tools/dev/global_inspector.gd" id="1_uoyvf"] + +[node name="GlobalInspector" type="Control" node_paths=PackedStringArray("labelContainer")] +layout_mode = 3 +anchors_preset = 0 +script = ExtResource("1_uoyvf") +labelContainer = NodePath("PanelContainer/MarginContainer/ScrollContainer/VBoxContainer") + +[node name="PanelContainer" type="PanelContainer" parent="."] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] +custom_minimum_size = Vector2(500, 400) +layout_mode = 2 + +[node name="ScrollContainer" type="ScrollContainer" parent="PanelContainer/MarginContainer"] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer/ScrollContainer"] +layout_mode = 2 diff --git a/addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.gd b/addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.gd new file mode 100644 index 00000000..c6e838e1 --- /dev/null +++ b/addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.gd @@ -0,0 +1,21 @@ +extends Control + +@export var labelContainer: Container + +func _ready() -> void: + escoria.globals_manager.global_changed.connect(_on_escoria_global_changed) + + +# React to changes to inventory globals +func _on_escoria_global_changed(global: String, old_value, new_value) -> void: + var label = Label.new() + var text = "%s | %s -> %s" % [global,old_value,new_value] + + label.set_text(text) + + labelContainer.add_child(label) + var count = labelContainer.get_child_count() + if labelContainer.get_child_count() > 11: + var child = labelContainer.get_child(0) + labelContainer.remove_child(child) + child.queue_free() diff --git a/addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.gd.uid b/addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.gd.uid new file mode 100644 index 00000000..06bc44bb --- /dev/null +++ b/addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.gd.uid @@ -0,0 +1 @@ +uid://bpcta3oc84rhu diff --git a/addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.tscn b/addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.tscn new file mode 100644 index 00000000..c89f296b --- /dev/null +++ b/addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.tscn @@ -0,0 +1,28 @@ +[gd_scene load_steps=2 format=3 uid="uid://ciyttd4u8lpfa"] + +[ext_resource type="Script" uid="uid://bpcta3oc84rhu" path="res://addons/escoria-ui-return-monkey-island/tools/dev/globals_watcher.gd" id="1_42y5j"] + +[node name="GlobalsWatcher" type="Control" node_paths=PackedStringArray("labelContainer")] +layout_mode = 3 +anchors_preset = 0 +script = ExtResource("1_42y5j") +labelContainer = NodePath("PanelContainer/MarginContainer/VBoxContainer/ScrollContainer/LabelContainer") + +[node name="PanelContainer" type="PanelContainer" parent="."] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] +custom_minimum_size = Vector2(400, 0) +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"] +layout_mode = 2 + +[node name="ScrollContainer" type="ScrollContainer" parent="PanelContainer/MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 300) +layout_mode = 2 + +[node name="LabelContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/ScrollContainer"] +layout_mode = 2 diff --git a/addons/escoria-ui-return-monkey-island/tools/dev/ui/tool_toggle_button.gd b/addons/escoria-ui-return-monkey-island/tools/dev/ui/tool_toggle_button.gd new file mode 100644 index 00000000..d98f661c --- /dev/null +++ b/addons/escoria-ui-return-monkey-island/tools/dev/ui/tool_toggle_button.gd @@ -0,0 +1,15 @@ +extends Button +class_name DevToolToggleButton + +@export var tool_id: String +@export var tool_node: Node + +signal toggle + +func _ready(): + self.connect("pressed", _toggle) + #self.connect("pressed", func(): toggle.emit(tool_id)) + +func _toggle(): + toggle.emit(tool_id) + pass diff --git a/addons/escoria-ui-return-monkey-island/tools/dev/ui/tool_toggle_button.gd.uid b/addons/escoria-ui-return-monkey-island/tools/dev/ui/tool_toggle_button.gd.uid new file mode 100644 index 00000000..d11cab6e --- /dev/null +++ b/addons/escoria-ui-return-monkey-island/tools/dev/ui/tool_toggle_button.gd.uid @@ -0,0 +1 @@ +uid://dmtnqjdnfeu2u diff --git a/project.godot b/project.godot index cbdd7a32..61074b15 100644 --- a/project.godot +++ b/project.godot @@ -107,35 +107,14 @@ folder_colors={ [input] -esc_show_debug_prompt={ -"deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194333,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) -] -} -switch_action_verb={ -"deadzone": 0.5, -"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":4,"canceled":false,"pressed":false,"double_click":false,"script":null) -, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":5,"canceled":false,"pressed":false,"double_click":false,"script":null) -] -} ui_show_hints={ "deadzone": 0.5, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } -ui_show_room_selector={ -"deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194334,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) -] -} -debug_loadgame={ -"deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":76,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) -] -} -debug_no_intro={ -"deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":78,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +ui_dev_tools={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194343,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] }