Dev Tools

This commit is contained in:
2025-09-13 17:14:02 +02:00
parent 1feef5c5cb
commit 5e63ef4576
14 changed files with 205 additions and 51 deletions

View File

@@ -105,21 +105,6 @@ 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

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1 @@
uid://co3lr1fo4jcio

View File

@@ -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")]

View File

@@ -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

View File

@@ -0,0 +1 @@
uid://bxon8pf4raeid

View File

@@ -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

View File

@@ -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()

View File

@@ -0,0 +1 @@
uid://bpcta3oc84rhu

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1 @@
uid://dmtnqjdnfeu2u

View File

@@ -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)
]
}