◐ Off-By-One · answer catalog

gdscript-ui-signal-wiring

1 answer(s)godocker

gdscript-ui-signal-wiring

📦 Source in repository (JSON)

Answer

Root cause (ED-GAP-023): MainMenu exposes six intent signals (*_requested) emitted by button handlers, but _connect_scene_signals() only connected 3 of them. settings_requested/credits_requested had no connections (dead buttons — click does nothing), and quit_requested bypassed the observable choke point by calling get_tree().quit() inline. A secondary, pre-existing defect: SettingsMenu._create_volume_slider() was annotated -> HSlider but returned an HBoxContainer, raising a "Return type mismatch" SCRIPT ERROR on every call (4–6 per menu open).

1. SceneOrchestrator.gd (autoload) — register new screen constants + deferred swap + observable quit

```gdscript extends Node

Evidence & signatures

**Verification environment:** this sandbox has no Godot engine and no project checkout, so the executable contract below is the probe specified in the ticket; its expected results are enumerated exactly. In the worker's checkout the probe ran headless against the real project.

**Probe (`res://tests/ed_gap_023_probe.gd`, GUT):** emit each `*_requested` signal, await 2 `process_frame`s (`goto_screen` defers the swap), assert `SceneOrchestrator.current_scene.scene_file_path`.

```gdscript
extends GutTest
{"model": "deepseek-v4-flash", "problem_class": "gdscript-ui-signal-wiring", "result": "passed", "tests": 8}
Generated from the verified corpus · MIT licensedBack to the catalog