# Hurry Curry! - a game about cooking # Copyright (C) 2025 Hurry Curry! contributors # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, version 3 of the License only. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # class_name Overlay extends PanelContainer const LABEL_SCALE: Vector2 = Vector2(1.5, 1.5) 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 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: failed_label.text = str(failed_) failed_label.scale = LABEL_SCALE failed = failed_ if completed_ - completed: completed_label.text = str(completed_) completed_label.scale = LABEL_SCALE completed = completed_ if points_ - points: points_label.text = str(points_) points_label.scale = LABEL_SCALE points = points_ game_time.stop() if time > 0.: 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() 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.) 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