feat(mvp): complete M13 clean-up milestone (real usernames, avatar studio redesign, pause menu, audio manager)
checkpoint / checkpoint (push) Successful in 6m22s

This commit is contained in:
2026-09-18 21:54:01 +00:00
parent 4c8a60fbc8
commit ee4006d217
31 changed files with 2394 additions and 262 deletions
+23 -4
View File
@@ -81,6 +81,13 @@ func _run() -> void:
return
enter_button.pressed.emit()
await process_frame
var briefing: Node = instance.find_child("WorldBriefingModal", true, false)
if briefing != null:
var modal_enter := _find_button(briefing, "Enter World")
if modal_enter != null:
modal_enter.pressed.emit()
await _wait_for_scene_change(instance, 600) # generous -- a real POST /join may spawn a dedicated server (slow)
var game_scene := current_scene
@@ -100,16 +107,28 @@ func _run() -> void:
var dist := (player as CharacterBody3D).global_position.distance_to((spawn_marker as Marker3D).global_position)
_check("player spawned at (or very near) the PlayerSpawn marker", dist < 0.5)
# 5. Escape should return to world_list.tscn (real key event, not a
# direct method call -- proves the actual input binding works).
# 5. Escape opens the Pause Menu, and Confirm Leave safely returns to world_list.tscn
var esc_event := InputEventKey.new()
esc_event.keycode = KEY_ESCAPE
esc_event.pressed = true
Input.parse_input_event(esc_event)
await _wait_for_scene_change(game_scene, 60)
await process_frame
await process_frame
var pause_menu: Node = game_scene.find_child("PauseMenu", true, false)
_check("Escape opened PauseMenu in-game", pause_menu != null)
if pause_menu != null:
var leave_btn := _find_button(pause_menu, "🚪 Leave World")
if leave_btn != null:
leave_btn.pressed.emit()
await process_frame
var confirm_btn := _find_button(pause_menu, "Confirm Leave")
if confirm_btn != null:
confirm_btn.pressed.emit()
await _wait_for_scene_change(game_scene, 120)
var back_to_menu := current_scene
_check("Escape returned to world_list.tscn", back_to_menu != null and back_to_menu.scene_file_path == "res://scenes/world_list.tscn")
_check("Confirmed Leave returned to world_list.tscn", back_to_menu != null and back_to_menu.scene_file_path == "res://scenes/world_list.tscn")
_finish()