fix(chat): support body and content fields in world and DM chat messages; feat(audio): add sound toggle switch and mute controls
checkpoint / checkpoint (push) Successful in 6m11s

This commit is contained in:
2026-09-19 13:38:23 +00:00
parent 7b693899a7
commit 7abf37ea81
13 changed files with 558 additions and 14 deletions
+37 -1
View File
@@ -17,6 +17,7 @@ var world_title: String = "World"
var _confirm_box: VBoxContainer
var _main_menu_vbox: VBoxContainer
var _fs_button: Button
var _sound_button: Button
func _init(p_can_edit: bool = false, p_world_title: String = "World") -> void:
@@ -101,6 +102,21 @@ func _ready() -> void:
_update_fs_label()
_main_menu_vbox.add_child(_fs_button)
_sound_button = _make_menu_btn("🔊 Sound FX: ON (M)", _on_toggle_sound)
_update_sound_label()
_main_menu_vbox.add_child(_sound_button)
var audio_mgr = get_node_or_null("/root/AudioManager")
if audio_mgr and audio_mgr.has_signal("sound_toggled"):
var on_toggled = func(_enabled: bool):
if is_instance_valid(_sound_button):
_update_sound_label()
audio_mgr.sound_toggled.connect(on_toggled)
_sound_button.tree_exiting.connect(func():
if is_instance_valid(audio_mgr) and audio_mgr.sound_toggled.is_connected(on_toggled):
audio_mgr.sound_toggled.disconnect(on_toggled)
)
var leave_btn := _make_menu_btn("🚪 Leave World", _on_prompt_leave, Color(1.0, 0.45, 0.45))
_main_menu_vbox.add_child(leave_btn)
@@ -152,7 +168,9 @@ func _on_resume_pressed() -> void:
func _on_toggle_fs() -> void:
Session.toggle_fullscreen()
var sess = Engine.get_main_loop().root.get_node_or_null("Session") if Engine.get_main_loop() else null
if sess and sess.has_method("toggle_fullscreen"):
sess.toggle_fullscreen()
_update_fs_label()
@@ -169,6 +187,24 @@ func _update_fs_label() -> void:
_fs_button.text = "⛶ Fullscreen Mode (F11)"
func _on_toggle_sound() -> void:
var audio_mgr = get_node_or_null("/root/AudioManager")
if audio_mgr and audio_mgr.has_method("toggle_sound"):
audio_mgr.toggle_sound()
_update_sound_label()
func _update_sound_label() -> void:
if _sound_button == null or not is_instance_valid(_sound_button):
return
var audio_mgr = get_node_or_null("/root/AudioManager")
var enabled: bool = audio_mgr.is_sound_enabled() if audio_mgr and audio_mgr.has_method("is_sound_enabled") else true
if enabled:
_sound_button.text = "🔊 Sound FX: ON (M)"
else:
_sound_button.text = "🔇 Sound FX: OFF (M)"
func _on_prompt_leave() -> void:
_main_menu_vbox.visible = false
_confirm_box.visible = true