From 6b9a338a20411eef3b89d9cf2cac669a18baa417 Mon Sep 17 00:00:00 2001 From: Tiger Jove Date: Fri, 23 Jan 2026 14:12:12 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20tool=20scripts=20were=20causing=20havoc?= =?UTF-8?q?=20on=20inherited=20scene=20editing=C2=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action_prompt/action_prompt.gd | 1 + src/project.godot | 1 + src/ui/prompter/prompt_button.gd | 29 +++++++++---------- src/ui/prompter/prompt_button.tscn | 14 +++++---- src/ui/prompter/prompter.gd | 8 +++++ 5 files changed, 32 insertions(+), 21 deletions(-) diff --git a/src/addons/input_prompts/action_prompt/action_prompt.gd b/src/addons/input_prompts/action_prompt/action_prompt.gd index 64650f0..f524be9 100644 --- a/src/addons/input_prompts/action_prompt/action_prompt.gd +++ b/src/addons/input_prompts/action_prompt/action_prompt.gd @@ -47,6 +47,7 @@ func _update_events(): # TODO: Find a cleaner way to cast these values var tmp: Array = [] if Engine.is_editor_hint(): + print("reading project settings") tmp = ProjectSettings.get_setting("input/" + action)["events"] else: tmp = InputMap.action_get_events(action) diff --git a/src/project.godot b/src/project.godot index ad751b1..8a714a1 100644 --- a/src/project.godot +++ b/src/project.godot @@ -72,6 +72,7 @@ import/blender/enabled=false interactables="" signage2="" signage1="" +prompts="All PromptButton inheritors." [gui] diff --git a/src/ui/prompter/prompt_button.gd b/src/ui/prompter/prompt_button.gd index c5b964f..82c2b4e 100644 --- a/src/ui/prompter/prompt_button.gd +++ b/src/ui/prompter/prompt_button.gd @@ -4,35 +4,34 @@ extends Button class_name PromptButton var _action : StringName -var _override : String @export_custom(PROPERTY_HINT_INPUT_NAME, "show_builtin") var action : StringName = &"ui_accept": set(value): + _action = value if is_node_ready(): - _set_action(value) + _update_action() else: - _set_action.call_deferred(value) + _update_action.call_deferred() get: return _action -func _set_action(value: StringName): - if _action == text or not text or not _action: - text = value - _action = value +func _update_action(): + text = _action $ActionPrompt.action = _action -func appear(prompt: String = "") -> void: - assert(not _override, "Prompt is already in use, overridden from '" + _override + "' to '" + text + "'") + +func _override_prompt(prompt: String): if prompt: - _override = text text = prompt + else: + text = action + + +func appear(prompt: String = "") -> void: + _override_prompt(prompt) show() + func vanish() -> void: hide() - if _override: - text = _override - _override = "" - else: - text = action # TODO: this is a bit backwards and doesn't allow manual overrides in editor diff --git a/src/ui/prompter/prompt_button.tscn b/src/ui/prompter/prompt_button.tscn index 94a1c05..ea61e03 100644 --- a/src/ui/prompter/prompt_button.tscn +++ b/src/ui/prompter/prompt_button.tscn @@ -16,23 +16,25 @@ unicode = 4194310 device = -1 pressed = true -[node name="PromptButton" type="Button"] +[node name="PromptButton" type="Button" groups=["prompts"]] text = "ui_accept" script = ExtResource("1_j4nun") [node name="ActionPrompt" type="TextureRect" parent="."] -custom_minimum_size = Vector2(32, 32) +clip_contents = true +custom_minimum_size = Vector2(58, 58) layout_mode = 1 anchors_preset = 4 anchor_top = 0.5 anchor_bottom = 0.5 -offset_left = -90.0 -offset_top = -50.0 -offset_right = 10.0 -offset_bottom = 50.0 +offset_left = -64.0 +offset_top = -29.0 +offset_right = -6.0 +offset_bottom = 29.0 grow_vertical = 2 size_flags_vertical = 3 texture = ExtResource("2_3b7la") +expand_mode = 2 stretch_mode = 5 script = ExtResource("3_flaeu") action = "ui_accept" diff --git a/src/ui/prompter/prompter.gd b/src/ui/prompter/prompter.gd index ff6d823..0af6bbd 100644 --- a/src/ui/prompter/prompter.gd +++ b/src/ui/prompter/prompter.gd @@ -4,3 +4,11 @@ class_name Prompter signal action_performed(action: String) + +var _prompts : Dictionary[StringName, Control] = {} + +func _ready() -> void: + for prompt in get_tree().get_nodes_in_group("prompts"): + _prompts[prompt.name] = prompt + prompt.get_parent().remove_child(prompt) + print(prompt)