aboutsummaryrefslogtreecommitdiff
path: root/client/gui/overlays/score.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/gui/overlays/score.gd')
-rw-r--r--client/gui/overlays/score.gd43
1 files changed, 35 insertions, 8 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