diff options
Diffstat (limited to 'client/gui/overlays/score.gd')
-rw-r--r-- | client/gui/overlays/score.gd | 43 |
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 |