73 lines
2.2 KiB
GDScript3
Raw Normal View History

2024-12-31 23:31:28 -05:00
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
2025-01-01 12:00:19 -05:00
@onready var pauseMenu: Control = $Pause
2024-12-31 23:31:28 -05:00
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
2025-01-01 12:00:19 -05:00
if (Input.is_action_just_released("pause")):
togglePause()
func togglePause() -> void:
pauseMenu.visible = !pauseMenu.visible
get_tree().paused = !get_tree().paused
2024-12-31 23:31:28 -05:00
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()