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")
|
push_error("BackendService: Failed to load Steamworks manager")
|
||||||
|
|
||||||
func _initialize_nakama() -> void:
|
func _initialize_nakama() -> void:
|
||||||
nakama_backend = NakamaManager
|
nakama_backend = get_node_or_null("/root/NakamaManager")
|
||||||
if nakama_backend:
|
if nakama_backend:
|
||||||
_connect_nakama_signals()
|
_connect_nakama_signals()
|
||||||
print("BackendService: Initialized Nakama backend")
|
print("BackendService: Initialized Nakama backend")
|
||||||
else:
|
else:
|
||||||
push_error("BackendService: NakamaManager not found")
|
push_error("BackendService: NakamaManager not found at /root/NakamaManager")
|
||||||
|
|
||||||
func _connect_nakama_signals() -> void:
|
func _connect_nakama_signals() -> void:
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ func show_panel() -> void:
|
|||||||
show()
|
show()
|
||||||
status_label.text = "Syncing scores..."
|
status_label.text = "Syncing scores..."
|
||||||
# Bulk-sync all users' storage stats to native leaderboard (server-side operation)
|
# 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()
|
var sync_result = await BackendService.sync_leaderboard()
|
||||||
if sync_result.get("success", false) == false:
|
if sync_result.get("success", false) == false:
|
||||||
push_error("[Leaderboard] sync_leaderboard RPC failed: " + str(sync_result.get("error", "")))
|
push_error("[Leaderboard] sync_leaderboard RPC failed: " + str(sync_result.get("error", "")))
|
||||||
@@ -87,7 +87,7 @@ func _on_close_pressed() -> void:
|
|||||||
# Data
|
# Data
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
func _fetch_leaderboard_data() -> void:
|
func _fetch_leaderboard_data() -> void:
|
||||||
if not NakamaManager.session:
|
if not NakamaManager.get("session"):
|
||||||
status_label.text = "Not connected to Nakama"
|
status_label.text = "Not connected to Nakama"
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ func _fetch_leaderboard_data() -> void:
|
|||||||
func _fetch_native_leaderboard() -> Array:
|
func _fetch_native_leaderboard() -> Array:
|
||||||
"""Use the Nakama client API to list native leaderboard records directly."""
|
"""Use the Nakama client API to list native leaderboard records directly."""
|
||||||
var result = await NakamaManager.client.list_leaderboard_records_async(
|
var result = await NakamaManager.client.list_leaderboard_records_async(
|
||||||
NakamaManager.session,
|
NakamaManager.get("session"),
|
||||||
"global_high_score",
|
"global_high_score",
|
||||||
[], # no specific owner filter
|
[], # no specific owner filter
|
||||||
null, # expiry = null (no filter)
|
null, # expiry = null (no filter)
|
||||||
@@ -133,7 +133,7 @@ func _fetch_native_leaderboard() -> Array:
|
|||||||
var parsed = JSON.parse_string(record.metadata)
|
var parsed = JSON.parse_string(record.metadata)
|
||||||
if parsed is Dictionary:
|
if parsed is Dictionary:
|
||||||
meta = parsed
|
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)
|
print("[Leaderboard] Local player meta: ", meta)
|
||||||
|
|
||||||
data.append({
|
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
|
entry["win_rate"] = float(won) / float(played) * 100.0 if played > 0 else 0.0
|
||||||
|
|
||||||
func _apply_local_overrides(data: Array) -> void:
|
func _apply_local_overrides(data: Array) -> void:
|
||||||
if not NakamaManager.session:
|
if not NakamaManager.get("session"):
|
||||||
return
|
return
|
||||||
var my_id = NakamaManager.session.user_id
|
var my_id = NakamaManager.get("session").user_id
|
||||||
for entry in data:
|
for entry in data:
|
||||||
if entry.get("user_id") == my_id:
|
if entry.get("user_id") == my_id:
|
||||||
entry["display_name"] = UserProfileManager.get_display_name(entry.get("display_name", "Unknown"))
|
entry["display_name"] = UserProfileManager.get_display_name(entry.get("display_name", "Unknown"))
|
||||||
|
|||||||
Reference in New Issue
Block a user