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:
@@ -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
|
||||
|
||||
@@ -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"))
|
||||
|
||||
Reference in New Issue
Block a user