feat: add GUI enhancement for Leaderboard, and Timer

This commit is contained in:
2026-03-26 02:57:04 +08:00
parent c46e28a69d
commit 66f54e34ab
27 changed files with 779 additions and 224 deletions
+9 -20
View File
@@ -321,17 +321,6 @@ func setup_leaderboard_ui(main_node):
if not leaderboard_panel:
push_warning("LeaderboardPanel node not found in scene")
return
# Apply styling to the panel
var style = StyleBoxFlat.new()
style.bg_color = Color(0.08, 0.08, 0.12, 0.92)
style.border_color = Color(0.85, 0.75, 0.25, 1.0) # Gold border
style.set_border_width_all(2)
style.corner_radius_top_left = 8
style.corner_radius_top_right = 8
style.corner_radius_bottom_left = 8
style.corner_radius_bottom_right = 8
leaderboard_panel.add_theme_stylebox_override("panel", style)
func _get_rank_text(rank: int) -> String:
match rank:
@@ -416,11 +405,11 @@ func initialize_leaderboard_with_players(players: Array):
if i < players.size():
var player = players[i]
var name_label = entry.get_node_or_null("NameLabel")
var score_label = entry.get_node_or_null("ScoreLabel")
var name_label = entry.get_node_or_null("SplitterContainer/SectionA/NameLabel")
var score_label = entry.get_node_or_null("SplitterContainer/SectionB/ScoreLabel")
var portrait_rect = entry.get_node_or_null("PortraitRect")
var ghost_icon = entry.get_node_or_null("GhostIcon")
var mini_powerup_bar = entry.get_node_or_null("MiniPowerUpBar")
var ghost_icon = entry.get_node_or_null("SplitterContainer/SectionA/GhostIcon")
var mini_powerup_bar = entry.get_node_or_null("SplitterContainer/SectionB/MiniPowerUpBar")
if name_label:
# Use display_name if available, otherwise fallback to node name
@@ -524,15 +513,15 @@ func update_live_leaderboard(players: Array):
_: rank_label.text = str(rank) + "th"
if player and player.name == str(my_id):
entry_root.modulate = Color(1.0, 1.0, 0.0) # Yellow
entry_root.modulate = Color(0.3, 0.7, 1.0) # Blue highlight for local player
else:
entry_root.modulate = Color.WHITE
var score_label = entry.get_node_or_null("ScoreLabel")
var ghost_icon = entry.get_node_or_null("GhostIcon")
var mini_powerup_bar = entry.get_node_or_null("MiniPowerUpBar")
var score_label = entry.get_node_or_null("SplitterContainer/SectionB/ScoreLabel")
var ghost_icon = entry.get_node_or_null("SplitterContainer/SectionA/GhostIcon")
var mini_powerup_bar = entry.get_node_or_null("SplitterContainer/SectionB/MiniPowerUpBar")
var portrait_rect = entry.get_node_or_null("PortraitRect")
var name_label = entry.get_node_or_null("NameLabel")
var name_label = entry.get_node_or_null("SplitterContainer/SectionA/NameLabel")
if name_label:
var default_name = player.name if player else "Unknown"