diff --git a/scenes/splash.gd b/scenes/splash.gd index a7fab4a..1101ca2 100644 --- a/scenes/splash.gd +++ b/scenes/splash.gd @@ -6,8 +6,12 @@ extends Control @onready var transition_overlay: ColorRect = %TransitionOverlay @onready var vbox: VBoxContainer = %VBox -var _v_end_size: int -var _p_end_size: int +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 func _ready() -> void: @@ -16,13 +20,15 @@ func _ready() -> void: var screen_size: Vector2 = get_viewport_rect().size - # Enormous end font sizes — a large fraction of screen height. - _v_end_size = maxi(1, int(screen_size.y * 0.55)) - _p_end_size = maxi(1, int(screen_size.y * 0.30)) + # Compute end font sizes as a large fraction of screen height. + # Use set() to go through the property system directly. + _v_end = maxi(1, int(screen_size.y * 0.55)) + _p_end = maxi(1, int(screen_size.y * 0.30)) + _v_start = 4 + _p_start = 4 - # Start tiny and invisible - v_label.add_theme_font_size_override("normal_font_size", 4) - panel_label.add_theme_font_size_override("normal_font_size", 4) + _set_v_size(_v_start) + _set_p_size(_p_start) vbox.modulate = Color(1, 1, 1, 0) transition_overlay.color = Color(0, 0, 0, 1) @@ -33,13 +39,15 @@ func _ready() -> void: reveal.tween_property(transition_overlay, "color", Color(0, 0, 0, 0), 0.4) await reveal.finished - # Phase 1: Grow font sizes + fade in (parallel) - # Pure font-size animation — no transforms, no containers to fight. + # Phase 1: Animate font sizes up + fade in + _elapsed = 0.0 + _animating = true 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 + _animating = false # Phase 2: Hold await get_tree().create_timer(1.0).timeout @@ -66,8 +74,16 @@ func _ready() -> void: queue_free() +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) + + func _set_sizes(progress: float) -> void: - var v_size: int = maxi(1, int(round(4 + progress * (_v_end_size - 4)))) - var p_size: int = maxi(1, int(round(4 + progress * (_p_end_size - 4)))) - v_label.add_theme_font_size_override("normal_font_size", v_size) - panel_label.add_theme_font_size_override("normal_font_size", p_size) + 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)