fix: resolve static cyclic references and unresolvable script dependencies in editor by retrieving Nakama session via get() and loading Autoloads via get_node_or_null

This commit is contained in:
2026-07-06 16:17:16 +08:00
parent 14d46b8823
commit adad53e94d
2 changed files with 8 additions and 8 deletions
+2 -2
View File
@@ -65,12 +65,12 @@ func _initialize_steamworks_for_auth() -> void:
push_error("BackendService: Failed to load Steamworks manager")
func _initialize_nakama() -> void:
nakama_backend = NakamaManager
nakama_backend = get_node_or_null("/root/NakamaManager")
if nakama_backend:
_connect_nakama_signals()
print("BackendService: Initialized Nakama backend")
else:
push_error("BackendService: NakamaManager not found")
push_error("BackendService: NakamaManager not found at /root/NakamaManager")
func _connect_nakama_signals() -> void:
pass
+6 -6
View File
@@ -71,7 +71,7 @@ func show_panel() -> void:
show()
status_label.text = "Syncing scores..."
# Bulk-sync all users' storage stats to native leaderboard (server-side operation)
if NakamaManager.session:
if NakamaManager.get("session"):
var sync_result = await BackendService.sync_leaderboard()
if sync_result.get("success", false) == false:
push_error("[Leaderboard] sync_leaderboard RPC failed: " + str(sync_result.get("error", "")))
@@ -87,7 +87,7 @@ func _on_close_pressed() -> void:
# Data
# -------------------------------------------------------------------------
func _fetch_leaderboard_data() -> void:
if not NakamaManager.session:
if not NakamaManager.get("session"):
status_label.text = "Not connected to Nakama"
return
@@ -115,7 +115,7 @@ func _fetch_leaderboard_data() -> void:
func _fetch_native_leaderboard() -> Array:
"""Use the Nakama client API to list native leaderboard records directly."""
var result = await NakamaManager.client.list_leaderboard_records_async(
NakamaManager.session,
NakamaManager.get("session"),
"global_high_score",
[], # no specific owner filter
null, # expiry = null (no filter)
@@ -133,7 +133,7 @@ func _fetch_native_leaderboard() -> Array:
var parsed = JSON.parse_string(record.metadata)
if parsed is Dictionary:
meta = parsed
if record.owner_id == NakamaManager.session.user_id:
if record.owner_id == NakamaManager.get("session").user_id:
print("[Leaderboard] Local player meta: ", meta)
data.append({
@@ -177,9 +177,9 @@ func _calculate_win_rates() -> void:
entry["win_rate"] = float(won) / float(played) * 100.0 if played > 0 else 0.0
func _apply_local_overrides(data: Array) -> void:
if not NakamaManager.session:
if not NakamaManager.get("session"):
return
var my_id = NakamaManager.session.user_id
var my_id = NakamaManager.get("session").user_id
for entry in data:
if entry.get("user_id") == my_id:
entry["display_name"] = UserProfileManager.get_display_name(entry.get("display_name", "Unknown"))