mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-11 08:23:45 +00:00
feat(*): Style the results screen and dock the heading tape under the scoreboard
This commit is contained in:
@@ -13,8 +13,9 @@ class_name HUDController
|
||||
@onready var team1_name_label = get_node_or_null("Control/ScoreboardPanel/ScoreRow/Team1Name")
|
||||
@onready var kickoff_label = get_node_or_null("Control/KickoffLabel")
|
||||
@onready var result_overlay = get_node_or_null("Control/ResultOverlay")
|
||||
@onready var result_label = get_node_or_null("Control/ResultOverlay/Center/VBox/ResultLabel")
|
||||
@onready var final_score_label = get_node_or_null("Control/ResultOverlay/Center/VBox/FinalScoreLabel")
|
||||
@onready var result_panel = get_node_or_null("Control/ResultOverlay/Center/ResultPanel")
|
||||
@onready var result_label = get_node_or_null("Control/ResultOverlay/Center/ResultPanel/VBox/ResultLabel")
|
||||
@onready var final_score_label = get_node_or_null("Control/ResultOverlay/Center/ResultPanel/VBox/FinalScoreLabel")
|
||||
|
||||
@onready var heading_tape: HudHeadingTape = get_node_or_null("Control/Instruments/HeadingTape")
|
||||
@onready var attitude_indicator: HudAttitudeIndicator = get_node_or_null("Control/Instruments/Cluster/Dials/AttitudeIndicator")
|
||||
@@ -166,8 +167,35 @@ func _on_match_ended(winning_team: int, score: Dictionary):
|
||||
if winning_team < 0:
|
||||
result_label.text = "Draw"
|
||||
result_label.remove_theme_color_override("font_color")
|
||||
_set_result_panel_accent(Color(1, 1, 1, 0.2))
|
||||
else:
|
||||
result_label.text = "%s team wins!" % TEAM_NAMES[winning_team]
|
||||
result_label.add_theme_color_override("font_color", TEAM_COLORS[winning_team])
|
||||
_set_result_panel_accent(TEAM_COLORS[winning_team])
|
||||
final_score_label.text = "%d - %d" % [score.get(0, 0), score.get(1, 0)]
|
||||
result_overlay.visible = true
|
||||
_animate_result_panel_in()
|
||||
|
||||
# Tints the result panel's border to match the winning team (neutral for a draw).
|
||||
func _set_result_panel_accent(color: Color) -> void:
|
||||
if not result_panel or not is_instance_valid(result_panel):
|
||||
return
|
||||
var style: StyleBoxFlat = result_panel.get_theme_stylebox("panel").duplicate()
|
||||
style.border_color = color
|
||||
result_panel.add_theme_stylebox_override("panel", style)
|
||||
|
||||
# Quick scale/fade pop so the results screen doesn't just snap into view.
|
||||
func _animate_result_panel_in() -> void:
|
||||
if not result_panel or not is_instance_valid(result_panel):
|
||||
return
|
||||
result_panel.scale = Vector2(0.85, 0.85)
|
||||
result_panel.modulate.a = 0.0
|
||||
# ResultOverlay was hidden since scene start, so ResultPanel's
|
||||
# container-computed size isn't valid until the next layout pass.
|
||||
await get_tree().process_frame
|
||||
if not is_instance_valid(result_panel):
|
||||
return
|
||||
result_panel.pivot_offset = result_panel.size / 2.0
|
||||
var tween := create_tween().set_parallel(true)
|
||||
tween.tween_property(result_panel, "scale", Vector2.ONE, 0.25).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_OUT)
|
||||
tween.tween_property(result_panel, "modulate:a", 1.0, 0.2)
|
||||
|
||||
Reference in New Issue
Block a user