feat: update leaderboard GUI, and HUD for gauge
This commit is contained in:
@@ -467,6 +467,12 @@ func _setup_global_match_timer_ui():
|
||||
func _process(delta):
|
||||
if not is_inside_tree(): return
|
||||
if not check_multiplayer(): return
|
||||
|
||||
if ui_manager and get_tree():
|
||||
var all_players = get_tree().get_nodes_in_group("Players")
|
||||
if all_players.size() > 0:
|
||||
ui_manager.update_live_leaderboard(all_players)
|
||||
|
||||
if multiplayer.is_server() and GameStateManager.is_game_started():
|
||||
if TurnManager.turn_based_mode:
|
||||
rpc("sync_turn_index", TurnManager.current_turn_index)
|
||||
@@ -2268,6 +2274,12 @@ func request_leaderboard_sync():
|
||||
@rpc("authority", "call_local", "reliable")
|
||||
func sync_leaderboard_data(player_data: Array):
|
||||
"""Receive leaderboard data from server and update UI."""
|
||||
# Update local player node scores first so live UI tick stays synced
|
||||
for data in player_data:
|
||||
var p_node = get_node_or_null(str(data.peer_id))
|
||||
if p_node:
|
||||
p_node.score = data.score
|
||||
|
||||
var leaderboard_panel = get_node_or_null("LeaderboardPanel")
|
||||
if not leaderboard_panel:
|
||||
return
|
||||
@@ -2309,6 +2321,7 @@ func _update_leaderboard_display():
|
||||
for p in all_players:
|
||||
var peer_id = p.name.to_int()
|
||||
var score = goals_cycle_manager.get_player_score(peer_id) if goals_cycle_manager else 0
|
||||
p.score = score # Assign locally so ui_manager.gd reads correct score
|
||||
player_data.append({"peer_id": peer_id, "name": p.display_name if not p.display_name.is_empty() else str(p.name), "score": score})
|
||||
|
||||
# Sort by score descending (with Stop n Go winner priority)
|
||||
|
||||
Reference in New Issue
Block a user