fix: stabilize web registration and asset loading

This commit is contained in:
2026-08-01 20:18:47 +08:00
parent bcdaa737eb
commit 7a07f52e2c
17 changed files with 1085 additions and 20 deletions

40
scenes/ui/WebBootstrap.gd Normal file
View File

@@ -0,0 +1,40 @@
extends Control
var _auth_manager: Node
var _scene_manager: Node
var _handled: bool = false
func _ready() -> void:
_auth_manager = get_node_or_null("/root/AuthManager")
_scene_manager = get_node_or_null("/root/SceneManager")
if OS.get_name() != "Web":
_scene_manager.call_deferred("change_scene", "auth", false)
return
if _auth_manager == null:
return
if _auth_manager.has_signal("browser_bootstrap_received"):
_auth_manager.connect("browser_bootstrap_received", _on_browser_bootstrap_received)
var kind := str(_auth_manager.call("get_browser_bootstrap_kind")) if _auth_manager.has_method("get_browser_bootstrap_kind") else ""
if not kind.is_empty():
call_deferred("_on_browser_bootstrap_received", kind)
func _on_browser_bootstrap_received(kind: String) -> void:
if _handled or _scene_manager == null:
return
_handled = true
if kind == "register":
_scene_manager.call("change_scene", "auth", false)
return
if _auth_manager.has_method("consume_browser_bootstrap_kind"):
_auth_manager.call("consume_browser_bootstrap_kind")
var appearanceManager := get_node_or_null("/root/AppearanceManager")
if appearanceManager != null and appearanceManager.has_method("apply_account_profile"):
appearanceManager.call("apply_account_profile", _auth_manager.call("get_current_profile"))
var chatManager := get_node_or_null("/root/ChatManager")
var token := str(_auth_manager.call("get_access_token"))
if chatManager != null and not token.is_empty():
chatManager.call("set_game_token", token)
chatManager.call("connect_to_chat_server")
if _auth_manager.has_method("fetch_profile"):
_auth_manager.call("fetch_profile")
_scene_manager.call("change_scene", "square", false)