Complete M11 Creator Studio and M12 Trust & Safety for PC5
checkpoint / checkpoint (push) Failing after 3h14m9s
checkpoint / checkpoint (push) Failing after 3h14m9s
- Creator Studio: Visual behavior & property inspector, GLB model importer, binary persistence - Trust & Safety: 18+ TOS confirmation (DOB removed), creator guidelines & briefing card on join, in-game reporting HUD - Test Harness: Add --filter, --skip-backend, --skip-godot to run_checkpoint_tests.py
This commit is contained in:
+57
-2
@@ -35,9 +35,12 @@ var _status_label: Label = null
|
||||
## enters 'build mode'... so the runtime footprint is negligible during
|
||||
## normal play"). Editing is in-memory only here; the save path to the
|
||||
## backend is a sibling task (world_persistence_impl.md).
|
||||
const ReportModal = preload("res://scripts/report_modal.gd")
|
||||
|
||||
var _build_editor: InGameEditor = null
|
||||
var _chat_overlay: Control = null
|
||||
var _friends_overlay: Control = null
|
||||
var _report_modal: Control = null
|
||||
var _hud_layer: CanvasLayer = null
|
||||
var _overlay_layer: CanvasLayer = null
|
||||
|
||||
@@ -194,7 +197,9 @@ func _unhandled_input(event: InputEvent) -> void:
|
||||
# ESC leaves the world back to the browser (or closes an open overlay/editor).
|
||||
if event.is_action_pressed("ui_cancel"):
|
||||
get_viewport().set_input_as_handled()
|
||||
if _chat_overlay != null and is_instance_valid(_chat_overlay):
|
||||
if _report_modal != null and is_instance_valid(_report_modal):
|
||||
_close_report_modal()
|
||||
elif _chat_overlay != null and is_instance_valid(_chat_overlay):
|
||||
_close_chat_overlay()
|
||||
elif _friends_overlay != null and is_instance_valid(_friends_overlay):
|
||||
_close_friends_overlay()
|
||||
@@ -255,10 +260,17 @@ func _setup_in_game_hud() -> void:
|
||||
build_btn.pressed.connect(_toggle_build_mode)
|
||||
bar.add_child(build_btn)
|
||||
|
||||
var report_btn := Button.new()
|
||||
report_btn.text = "🚩 Report"
|
||||
report_btn.pressed.connect(_toggle_report_modal)
|
||||
bar.add_child(report_btn)
|
||||
|
||||
var exit_btn := Button.new()
|
||||
exit_btn.text = "🚪 Menu [ESC]"
|
||||
exit_btn.pressed.connect(func():
|
||||
if _chat_overlay != null and is_instance_valid(_chat_overlay):
|
||||
if _report_modal != null and is_instance_valid(_report_modal):
|
||||
_close_report_modal()
|
||||
elif _chat_overlay != null and is_instance_valid(_chat_overlay):
|
||||
_close_chat_overlay()
|
||||
elif _friends_overlay != null and is_instance_valid(_friends_overlay):
|
||||
_close_friends_overlay()
|
||||
@@ -270,6 +282,49 @@ func _setup_in_game_hud() -> void:
|
||||
bar.add_child(exit_btn)
|
||||
|
||||
|
||||
func _toggle_report_modal() -> void:
|
||||
if _report_modal != null and is_instance_valid(_report_modal):
|
||||
_close_report_modal()
|
||||
else:
|
||||
_open_report_modal()
|
||||
|
||||
|
||||
func _open_report_modal() -> void:
|
||||
if _chat_overlay != null and is_instance_valid(_chat_overlay):
|
||||
_close_chat_overlay()
|
||||
if _friends_overlay != null and is_instance_valid(_friends_overlay):
|
||||
_close_friends_overlay()
|
||||
if _build_editor != null and is_instance_valid(_build_editor):
|
||||
_close_build_mode()
|
||||
|
||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||
_player.set_physics_process(false)
|
||||
_player.set_process_unhandled_input(false)
|
||||
|
||||
_report_modal = ReportModal.new()
|
||||
var wid: int = int(Session.world_id) if Session.world_id != null else 0
|
||||
_report_modal.setup_report("world", wid, "Current World" if wid > 0 else "Play Session")
|
||||
_report_modal.closed.connect(_close_report_modal)
|
||||
_report_modal.report_submitted.connect(func(_type, _id):
|
||||
pass
|
||||
)
|
||||
_report_modal.tree_exited.connect(func():
|
||||
if _report_modal != null:
|
||||
_close_report_modal()
|
||||
)
|
||||
add_child(_report_modal)
|
||||
|
||||
|
||||
func _close_report_modal() -> void:
|
||||
if _report_modal != null and is_instance_valid(_report_modal):
|
||||
var m := _report_modal
|
||||
_report_modal = null
|
||||
m.queue_free()
|
||||
_player.set_physics_process(true)
|
||||
_player.set_process_unhandled_input(true)
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
|
||||
|
||||
func _toggle_chat_overlay() -> void:
|
||||
if _chat_overlay != null and is_instance_valid(_chat_overlay):
|
||||
_close_chat_overlay()
|
||||
|
||||
Reference in New Issue
Block a user