2026-05-20 21:49:20 -04:00
|
|
|
extends Control
|
|
|
|
|
|
|
|
|
|
|
2026-05-20 22:05:54 -04:00
|
|
|
@onready var v_label: Label = %VLabel
|
|
|
|
|
@onready var panel_label: Label = %PanelLabel
|
2026-05-20 21:49:20 -04:00
|
|
|
@onready var transition_overlay: ColorRect = %TransitionOverlay
|
2026-05-20 22:14:07 -04:00
|
|
|
@onready var vbox: VBoxContainer = %VBox
|
|
|
|
|
|
2026-05-20 22:16:56 -04:00
|
|
|
var _elapsed: float = 0.0
|
|
|
|
|
var _animating: bool = false
|
|
|
|
|
var _v_start: int
|
|
|
|
|
var _v_end: int
|
|
|
|
|
var _p_start: int
|
|
|
|
|
var _p_end: int
|
2026-05-20 21:49:20 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
func _ready() -> void:
|
|
|
|
|
if not Engine.is_editor_hint():
|
|
|
|
|
get_window().mode = Window.MODE_FULLSCREEN
|
|
|
|
|
|
2026-05-20 22:10:26 -04:00
|
|
|
var screen_size: Vector2 = get_viewport_rect().size
|
|
|
|
|
|
2026-05-20 22:16:56 -04:00
|
|
|
# Compute end font sizes as a large fraction of screen height.
|
|
|
|
|
# Use set() to go through the property system directly.
|
2026-05-20 22:17:39 -04:00
|
|
|
_v_end = maxi(1, int(screen_size.y * 0.28))
|
|
|
|
|
_p_end = maxi(1, int(screen_size.y * 0.15))
|
2026-05-20 22:16:56 -04:00
|
|
|
_v_start = 4
|
|
|
|
|
_p_start = 4
|
2026-05-20 22:10:26 -04:00
|
|
|
|
2026-05-20 22:16:56 -04:00
|
|
|
_set_v_size(_v_start)
|
|
|
|
|
_set_p_size(_p_start)
|
2026-05-20 22:14:07 -04:00
|
|
|
vbox.modulate = Color(1, 1, 1, 0)
|
2026-05-20 21:49:20 -04:00
|
|
|
transition_overlay.color = Color(0, 0, 0, 1)
|
|
|
|
|
|
|
|
|
|
await get_tree().process_frame
|
2026-05-20 21:55:35 -04:00
|
|
|
|
2026-05-20 22:14:07 -04:00
|
|
|
# Reveal background
|
2026-05-20 21:49:20 -04:00
|
|
|
var reveal := create_tween()
|
|
|
|
|
reveal.tween_property(transition_overlay, "color", Color(0, 0, 0, 0), 0.4)
|
|
|
|
|
await reveal.finished
|
|
|
|
|
|
2026-05-20 22:16:56 -04:00
|
|
|
# Phase 1: Animate font sizes up + fade in
|
|
|
|
|
_elapsed = 0.0
|
|
|
|
|
_animating = true
|
2026-05-20 22:14:07 -04:00
|
|
|
var grow := create_tween()
|
|
|
|
|
grow.set_parallel(true)
|
|
|
|
|
grow.tween_method(_set_sizes, 0.0, 1.0, 2.0).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_BACK)
|
|
|
|
|
grow.tween_property(vbox, "modulate", Color(1, 1, 1, 1), 1.8).set_ease(Tween.EASE_OUT)
|
|
|
|
|
await grow.finished
|
2026-05-20 22:16:56 -04:00
|
|
|
_animating = false
|
2026-05-20 21:49:20 -04:00
|
|
|
|
|
|
|
|
# Phase 2: Hold
|
|
|
|
|
await get_tree().create_timer(1.0).timeout
|
|
|
|
|
|
|
|
|
|
# Phase 3: Fade out
|
|
|
|
|
var fade_out := create_tween()
|
2026-05-20 22:14:07 -04:00
|
|
|
fade_out.tween_property(vbox, "modulate", Color(1, 1, 1, 0), 0.8).set_ease(Tween.EASE_IN)
|
2026-05-20 21:49:20 -04:00
|
|
|
await fade_out.finished
|
|
|
|
|
|
|
|
|
|
# Phase 4: Crossfade to dashboard
|
|
|
|
|
var to_black := create_tween()
|
2026-05-20 21:52:21 -04:00
|
|
|
to_black.tween_property(transition_overlay, "color", Color(0, 0, 0, 1), 0.3)
|
2026-05-20 21:49:20 -04:00
|
|
|
await to_black.finished
|
|
|
|
|
|
|
|
|
|
var dashboard := preload("res://scenes/dashboard.tscn").instantiate()
|
|
|
|
|
add_child(dashboard)
|
|
|
|
|
|
|
|
|
|
var from_black := create_tween()
|
|
|
|
|
from_black.tween_property(transition_overlay, "color", Color(0, 0, 0, 0), 0.6)
|
|
|
|
|
await from_black.finished
|
|
|
|
|
|
2026-05-20 21:52:21 -04:00
|
|
|
remove_child(dashboard)
|
|
|
|
|
get_tree().root.add_child(dashboard)
|
2026-05-20 21:49:20 -04:00
|
|
|
queue_free()
|
2026-05-20 22:14:07 -04:00
|
|
|
|
|
|
|
|
|
2026-05-20 22:16:56 -04:00
|
|
|
func _set_v_size(px: int) -> void:
|
|
|
|
|
v_label.set("theme_override_font_sizes/font_size", px)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func _set_p_size(px: int) -> void:
|
|
|
|
|
panel_label.set("theme_override_font_sizes/font_size", px)
|
|
|
|
|
|
|
|
|
|
|
2026-05-20 22:14:07 -04:00
|
|
|
func _set_sizes(progress: float) -> void:
|
2026-05-20 22:16:56 -04:00
|
|
|
var v_size: int = maxi(1, int(round(_v_start + progress * (_v_end - _v_start))))
|
|
|
|
|
var p_size: int = maxi(1, int(round(_p_start + progress * (_p_end - _p_start))))
|
|
|
|
|
_set_v_size(v_size)
|
|
|
|
|
_set_p_size(p_size)
|