diff --git a/src/game/engine/scenes/statistics/statistics.gd b/src/game/engine/scenes/statistics/statistics.gd index 9fe87e89..7fee46c3 100644 --- a/src/game/engine/scenes/statistics/statistics.gd +++ b/src/game/engine/scenes/statistics/statistics.gd @@ -30,13 +30,10 @@ const TAB_RANKINGS: int = 2 const TAB_REPLAY: int = 3 const TAB_HISTORIES: int = 4 -## Rank-badge colours, highest → lowest. -const RANK_COLORS: Array[Color] = [ - Color(0.3, 0.9, 0.4), - Color(0.9, 0.85, 0.3), - Color(0.9, 0.6, 0.2), - Color(0.9, 0.3, 0.3), -] +## Rank-badge colours, highest → lowest. Routed through semantic design tokens +## (good → warning → diplomacy → bad); populated in _ready() because token lookups +## are autoload calls and cannot appear in a const initializer. +var _rank_colors: Array[Color] = [] ## Active tab index. var _current_tab: int = 0 @@ -69,6 +66,12 @@ var _close_button: Button = null func _ready() -> void: + _rank_colors = [ + ThemeAssets.color("semantic.positive"), + ThemeAssets.color("semantic.warning"), + ThemeAssets.color("semantic.diplomacy"), + ThemeAssets.color("semantic.negative"), + ] _build_modal() _restore_last_tab() _refresh_current_tab() @@ -83,7 +86,7 @@ func _build_modal() -> void: var backdrop: ColorRect = ColorRect.new() backdrop.name = "Backdrop" backdrop.set_anchors_preset(Control.PRESET_FULL_RECT) - backdrop.color = Color(0.0, 0.0, 0.0, 0.72) + backdrop.color = ThemeAssets.color("background.overlay") backdrop.mouse_filter = Control.MOUSE_FILTER_STOP add_child(backdrop) @@ -95,8 +98,8 @@ func _build_modal() -> void: panel.anchor_top = 0.04 panel.anchor_bottom = 0.96 var style: StyleBoxFlat = StyleBoxFlat.new() - style.bg_color = Color(0.09, 0.08, 0.07, 0.97) - style.border_color = Color(0.55, 0.48, 0.32, 0.9) + style.bg_color = ThemeAssets.color("background.panel") + style.border_color = ThemeAssets.color("border.panel") style.set_border_width_all(2) style.set_corner_radius_all(6) style.content_margin_left = 12.0 @@ -120,7 +123,7 @@ func _build_modal() -> void: title_lbl.text = ThemeVocabulary.lookup("statistics_title") title_lbl.size_flags_horizontal = Control.SIZE_EXPAND_FILL title_lbl.add_theme_font_size_override("font_size", 20) - title_lbl.add_theme_color_override("font_color", Color(0.9, 0.84, 0.65)) + title_lbl.add_theme_color_override("font_color", ThemeAssets.color("text.title")) title_row.add_child(title_lbl) _close_button = Button.new() @@ -218,7 +221,7 @@ func _build_graphs_tab(parent: Control) -> void: _graph_metric_label.custom_minimum_size.x = 200 _graph_metric_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER _graph_metric_label.add_theme_font_size_override("font_size", 15) - _graph_metric_label.add_theme_color_override("font_color", Color(0.85, 0.78, 0.58)) + _graph_metric_label.add_theme_color_override("font_color", ThemeAssets.color("text.secondary")) ctrl_row.add_child(_graph_metric_label) var next_btn: Button = Button.new() @@ -256,7 +259,7 @@ func _build_rankings_tab(parent: Control) -> void: _rank_metric_label.custom_minimum_size.x = 200 _rank_metric_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER _rank_metric_label.add_theme_font_size_override("font_size", 15) - _rank_metric_label.add_theme_color_override("font_color", Color(0.85, 0.78, 0.58)) + _rank_metric_label.add_theme_color_override("font_color", ThemeAssets.color("text.secondary")) ctrl_row.add_child(_rank_metric_label) var next_btn: Button = Button.new() @@ -297,7 +300,7 @@ func _build_histories_tab(parent: Control) -> void: _hist_notice.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART _hist_notice.text = ThemeVocabulary.lookup("statistics_histories_pending") _hist_notice.add_theme_font_size_override("font_size", 15) - _hist_notice.add_theme_color_override("font_color", Color(0.5, 0.5, 0.5)) + _hist_notice.add_theme_color_override("font_color", ThemeAssets.color("text.muted")) panel.add_child(_hist_notice) @@ -399,7 +402,7 @@ func _add_demo_row( cat_lbl.custom_minimum_size.x = 160 cat_lbl.size_flags_vertical = Control.SIZE_SHRINK_CENTER cat_lbl.add_theme_font_size_override("font_size", 13) - cat_lbl.add_theme_color_override("font_color", Color(0.7, 0.65, 0.5)) + cat_lbl.add_theme_color_override("font_color", ThemeAssets.color("text.secondary")) row.add_child(cat_lbl) var val_lbl: Label = Label.new() @@ -417,11 +420,11 @@ func _add_demo_row( rank_lbl.add_theme_font_size_override("font_size", 14) if rank > 0: rank_lbl.text = "#%d" % rank - var ci: int = mini(rank - 1, RANK_COLORS.size() - 1) - rank_lbl.add_theme_color_override("font_color", RANK_COLORS[ci]) + var ci: int = mini(rank - 1, _rank_colors.size() - 1) + rank_lbl.add_theme_color_override("font_color", _rank_colors[ci]) else: rank_lbl.text = "--" - rank_lbl.add_theme_color_override("font_color", Color(0.4, 0.4, 0.4)) + rank_lbl.add_theme_color_override("font_color", ThemeAssets.color("text.disabled")) row.add_child(rank_lbl) var best_lbl: Label = Label.new() @@ -430,7 +433,7 @@ func _add_demo_row( best_lbl.size_flags_vertical = Control.SIZE_SHRINK_CENTER best_lbl.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT best_lbl.add_theme_font_size_override("font_size", 13) - best_lbl.add_theme_color_override("font_color", Color(0.5, 0.5, 0.5)) + best_lbl.add_theme_color_override("font_color", ThemeAssets.color("text.muted")) row.add_child(best_lbl) var avg_lbl: Label = Label.new() @@ -439,7 +442,7 @@ func _add_demo_row( avg_lbl.size_flags_vertical = Control.SIZE_SHRINK_CENTER avg_lbl.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT avg_lbl.add_theme_font_size_override("font_size", 13) - avg_lbl.add_theme_color_override("font_color", Color(0.4, 0.4, 0.4)) + avg_lbl.add_theme_color_override("font_color", ThemeAssets.color("text.disabled")) row.add_child(avg_lbl) _demo_list.add_child(row) @@ -518,7 +521,7 @@ func _add_axis_label(pos: Vector2, text: String) -> void: lbl.text = text lbl.position = pos lbl.add_theme_font_size_override("font_size", 10) - lbl.add_theme_color_override("font_color", Color(0.4, 0.4, 0.4)) + lbl.add_theme_color_override("font_color", ThemeAssets.color("text.disabled")) _graph_area.add_child(lbl) @@ -529,7 +532,7 @@ func _add_graph_placeholder(text: String) -> void: lbl.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER lbl.vertical_alignment = VERTICAL_ALIGNMENT_CENTER lbl.add_theme_font_size_override("font_size", 16) - lbl.add_theme_color_override("font_color", Color(0.4, 0.4, 0.4)) + lbl.add_theme_color_override("font_color", ThemeAssets.color("text.disabled")) _graph_area.add_child(lbl) @@ -593,8 +596,8 @@ func _add_rank_row( rank_lbl.custom_minimum_size.x = 44 rank_lbl.size_flags_vertical = Control.SIZE_SHRINK_CENTER rank_lbl.add_theme_font_size_override("font_size", 16) - var ci: int = mini(rank - 1, RANK_COLORS.size() - 1) - rank_lbl.add_theme_color_override("font_color", RANK_COLORS[ci]) + var ci: int = mini(rank - 1, _rank_colors.size() - 1) + rank_lbl.add_theme_color_override("font_color", _rank_colors[ci]) row.add_child(rank_lbl) var dot: ColorRect = ColorRect.new() @@ -616,7 +619,7 @@ func _add_rank_row( val_lbl.size_flags_vertical = Control.SIZE_SHRINK_CENTER val_lbl.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT val_lbl.add_theme_font_size_override("font_size", 15) - val_lbl.add_theme_color_override("font_color", Color(0.95, 0.82, 0.3)) + val_lbl.add_theme_color_override("font_color", ThemeAssets.color("accent.goldResource")) row.add_child(val_lbl) var trend_lbl: Label = Label.new() @@ -627,13 +630,13 @@ func _add_rank_row( match trend: 1: trend_lbl.text = ThemeVocabulary.lookup("trend_up") - trend_lbl.add_theme_color_override("font_color", Color(0.3, 0.9, 0.4)) + trend_lbl.add_theme_color_override("font_color", ThemeAssets.color("semantic.positive")) -1: trend_lbl.text = ThemeVocabulary.lookup("trend_down") - trend_lbl.add_theme_color_override("font_color", Color(0.9, 0.3, 0.3)) + trend_lbl.add_theme_color_override("font_color", ThemeAssets.color("semantic.negative")) _: trend_lbl.text = ThemeVocabulary.lookup("trend_flat") - trend_lbl.add_theme_color_override("font_color", Color(0.5, 0.5, 0.5)) + trend_lbl.add_theme_color_override("font_color", ThemeAssets.color("text.muted")) row.add_child(trend_lbl) _rank_list.add_child(row) @@ -644,7 +647,7 @@ func _add_rank_placeholder(text: String) -> void: lbl.text = text lbl.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER lbl.add_theme_font_size_override("font_size", 15) - lbl.add_theme_color_override("font_color", Color(0.4, 0.4, 0.4)) + lbl.add_theme_color_override("font_color", ThemeAssets.color("text.disabled")) _rank_list.add_child(lbl) @@ -678,7 +681,7 @@ func _add_header_label( lbl.text = text lbl.custom_minimum_size.x = min_w lbl.add_theme_font_size_override("font_size", 12) - lbl.add_theme_color_override("font_color", Color(0.55, 0.5, 0.38)) + lbl.add_theme_color_override("font_color", ThemeAssets.color("text.muted")) if right_align: lbl.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT parent.add_child(lbl)