diff options
Diffstat (limited to 'client/gui')
-rw-r--r-- | client/gui/overlays/score.gd | 43 | ||||
-rw-r--r-- | client/gui/overlays/score.tscn | 29 |
2 files changed, 57 insertions, 15 deletions
diff --git a/client/gui/overlays/score.gd b/client/gui/overlays/score.gd index f12bbeba..f66ae559 100644 --- a/client/gui/overlays/score.gd +++ b/client/gui/overlays/score.gd @@ -22,13 +22,20 @@ var failed: int = 0 var completed: int = 0 var points: int = 0 +var time_target_scale := Vector2(1, 1) + @onready var failed_label: Label = $Score/Paper/Margin/Lines/Line2/Failed @onready var completed_label: Label = $Score/Paper/Margin/Lines/Line1/Completed @onready var points_label: Label = $Score/Paper/Margin/Lines/Line3/Points -@onready var timer: Timer = $Timer -@onready var minutes_label: Label = $Time/Paper/Line/Minutes -@onready var seconds_label: Label = $Time/Paper/Line/Seconds +@onready var minutes_label: Label = $Time/Paper/Node2D/Line/Minutes +@onready var seconds_label: Label = $Time/Paper/Node2D/Line/Seconds + @onready var announcement = get_node("../AnnounceTitle") +@onready var time_node_2d: Node2D = $Time/Paper/Node2D + +@onready var game_time: Timer = $GameTime +@onready var warning_time: Timer = $WarningTime +@onready var pulsating_time: Timer = $Time/Paper/Node2D/Line/PulsatingTime func update(failed_: int, completed_: int, points_: int, time: float): if failed_ - failed: @@ -44,22 +51,42 @@ func update(failed_: int, completed_: int, points_: int, time: float): points_label.scale = LABEL_SCALE points = points_ - timer.stop() + game_time.stop() if time > 0.: - timer.wait_time = time - timer.start() + game_time.start(time) + warning_time.start(time - 11) + +func set_paused(_state: bool): + warning_time.paused = _state + pulsating_time.paused = _state + game_time.paused = _state func set_ingame(_state: bool, lobby: bool): if lobby: hide() - timer.stop() + time_target_scale = Vector2(1, 1) + warning_time.stop() + pulsating_time.stop() + game_time.stop() else: + time_target_scale = Vector2(1, 1) + pulsating_time.stop() show() func _process(delta): failed_label.scale = G.interpolate(failed_label.scale, Vector2(1, 1), delta * 4.) completed_label.scale = G.interpolate(completed_label.scale, Vector2(1, 1), delta * 4.) points_label.scale = G.interpolate(points_label.scale, Vector2(1, 1), delta * 4.) - var seconds_remaining := int(floor(timer.time_left)) + time_node_2d.scale = G.interpolate(time_node_2d.scale, time_target_scale, delta * 4.) + var seconds_remaining := int(floor(game_time.time_left)) seconds_label.text = "%02d" % (seconds_remaining % 60) minutes_label.text = "%02d" % (seconds_remaining / 60) + +func _on_warning_time_timeout() -> void: + _on_pulsating_time_timeout() + pulsating_time.start() + +var state := true +func _on_pulsating_time_timeout() -> void: + time_target_scale = Vector2(1.2, 1.2) if state else Vector2(1, 1) + state = not state diff --git a/client/gui/overlays/score.tscn b/client/gui/overlays/score.tscn index 5c79eda1..fcdfb514 100644 --- a/client/gui/overlays/score.tscn +++ b/client/gui/overlays/score.tscn @@ -20,9 +20,12 @@ theme = ExtResource("1_4kujw") theme_override_styles/panel = SubResource("StyleBoxFlat_04ujj") script = ExtResource("2_kbjds") -[node name="Timer" type="Timer" parent="."] +[node name="GameTime" type="Timer" parent="."] wait_time = 30.0 +[node name="WarningTime" type="Timer" parent="."] +one_shot = true + [node name="Score" type="Control" parent="."] layout_mode = 2 size_flags_horizontal = 8 @@ -154,12 +157,18 @@ grow_vertical = 2 rotation = 0.0610865 texture = ExtResource("3_oum5g") -[node name="Line" type="HBoxContainer" parent="Time/Paper"] -layout_mode = 0 +[node name="Node2D" type="Node2D" parent="Time/Paper"] +position = Vector2(95, 30) -[node name="Minutes" type="Label" parent="Time/Paper/Line"] +[node name="Line" type="HBoxContainer" parent="Time/Paper/Node2D"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Minutes" type="Label" parent="Time/Paper/Node2D/Line"] auto_translate_mode = 2 -custom_minimum_size = Vector2(80, 0) layout_mode = 2 theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_fonts/font = ExtResource("3_u54fv") @@ -167,7 +176,7 @@ theme_override_font_sizes/font_size = 45 text = "05" horizontal_alignment = 2 -[node name="Colon" type="Label" parent="Time/Paper/Line"] +[node name="Colon" type="Label" parent="Time/Paper/Node2D/Line"] auto_translate_mode = 2 layout_mode = 2 theme_override_colors/font_color = Color(0, 0, 0, 1) @@ -176,10 +185,16 @@ theme_override_font_sizes/font_size = 45 text = ":" horizontal_alignment = 1 -[node name="Seconds" type="Label" parent="Time/Paper/Line"] +[node name="Seconds" type="Label" parent="Time/Paper/Node2D/Line"] auto_translate_mode = 2 layout_mode = 2 theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_fonts/font = ExtResource("3_u54fv") theme_override_font_sizes/font_size = 45 text = "00" + +[node name="PulsatingTime" type="Timer" parent="Time/Paper/Node2D/Line"] +wait_time = 0.5 + +[connection signal="timeout" from="WarningTime" to="." method="_on_warning_time_timeout"] +[connection signal="timeout" from="Time/Paper/Node2D/Line/PulsatingTime" to="." method="_on_pulsating_time_timeout"] |