aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/game.gd2
-rw-r--r--client/gui/overlays/score.gd43
-rw-r--r--client/gui/overlays/score.tscn29
3 files changed, 58 insertions, 16 deletions
diff --git a/client/game.gd b/client/game.gd
index 3061b2a0..152417e0 100644
--- a/client/game.gd
+++ b/client/game.gd
@@ -359,7 +359,7 @@ func handle_packet(p):
if is_replay and OS.has_feature("movie"):
menu.exit()
"pause":
- overlay_score.timer.paused = p.state
+ overlay_score.set_paused(p.state)
Global.game_paused = p.state
_: push_error("Unrecognized packet type: %s" % p.type)
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"]