class_name UI extends Control static var instance: UI @onready var announcement: RichTextLabel = $PresentAnnouncement @onready var timerText: RichTextLabel = $TimerText @onready var timer: Timer = $Timer @onready var compassArrow: TextureRect = $Compass/TextureRect2 @onready var compassText: RichTextLabel = $Compass/RichTextLabel @onready var streak: Control = $Streak @onready var streakCount: RichTextLabel = $Streak/Count var tween: Tween func _enter_tree(): if (instance != null && is_instance_valid(instance)): queue_free() else: instance = self func setStreak(length: int): if (length < 2): streak.hide() if (length >= 2): streakCount.text = str(length) streak.show() # Called when the node enters the scene tree for the first time. func _ready() -> void: announcement.hide() announcement.scale = Vector2(0.01, 0.01) func _process(delta: float) -> void: timerText.text = "[right]%s:%s[/right]" % [str(int(timer.time_left / 60)), str(int(timer.time_left) % 60).pad_zeros(2)] var distance: int = int(Sleigh.instance.position.distance_to(City.instance.delivery.position) / 10) compassText.text = "[center]Next Delivery In\n%s Belly Bounces[/center]" % str(distance) if (City.instance.delivery.position.x < 0): compassArrow.flip_h = false else: compassArrow.flip_h = true func showTitle(text: String) -> void: announcement.text = "[center]%s[/center]" % text announcement.show() if (tween): tween.kill() tween = create_tween() tween.tween_property(announcement, "scale", Vector2(1, 1), 0.2) tween.tween_interval(2) tween.tween_property(announcement, "scale", Vector2(0.01, 0.01), 0.2) await tween.finished announcement.hide() func hideMost() -> void: $Speedometer.hide() $Compass.hide() $Streak.hide() func showMost() -> void: $Speedometer.show() $Compass.show() if (Sleigh.streak > 1): $Streak.show() func _on_timer_timeout() -> void: $GameFinish/RichTextLabel2.text = "[center]Your Score: %s[/center]" % str(Sleigh.score) $GameFinish.show() hideMost()