feat: update leaderboard GUI, and HUD for gauge

This commit is contained in:
2026-03-25 02:38:09 +08:00
parent 7ca63fea00
commit cda39125f4
18 changed files with 699 additions and 64 deletions
+13
View File
@@ -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)