72 lines
2.0 KiB
GDScript
72 lines
2.0 KiB
GDScript
extends CanvasLayer
|
|
|
|
# Level Text UI - Shows "LEVEL #" when starting a new level
|
|
|
|
var level_label: Label = null
|
|
|
|
func _ready():
|
|
visible = false
|
|
# Find level label (works for both scene-based and programmatically created UI)
|
|
var vbox = get_child(0) if get_child_count() > 0 else null
|
|
if vbox:
|
|
for child in vbox.get_children():
|
|
if child.name == "LevelLabel" or child is Label:
|
|
level_label = child
|
|
break
|
|
|
|
func show_level(level_number: int):
|
|
print("LevelTextUI: show_level(", level_number, ") called")
|
|
|
|
# Stop any existing tweens to prevent conflicts
|
|
var existing_tweens = get_tree().get_processed_tweens()
|
|
for tween in existing_tweens:
|
|
if tween.is_valid():
|
|
tween.kill()
|
|
|
|
# Get vbox once at the start (reuse throughout function)
|
|
var vbox = get_child(0) if get_child_count() > 0 else null
|
|
|
|
# Update label text FIRST before showing
|
|
if level_label:
|
|
level_label.text = "LEVEL " + str(level_number)
|
|
print("LevelTextUI: Set label text to: ", level_label.text)
|
|
else:
|
|
print("LevelTextUI: ERROR - level_label is null!")
|
|
# Try to find it again
|
|
if vbox:
|
|
for child in vbox.get_children():
|
|
if child.name == "LevelLabel" or child is Label:
|
|
level_label = child
|
|
level_label.text = "LEVEL " + str(level_number)
|
|
print("LevelTextUI: Found label and set text to: ", level_label.text)
|
|
break
|
|
|
|
# Show UI
|
|
visible = true
|
|
|
|
# Fade in - fade the VBoxContainer and level label
|
|
if vbox:
|
|
vbox.modulate.a = 0.0
|
|
var fade_in = create_tween()
|
|
fade_in.set_parallel(true)
|
|
fade_in.tween_property(vbox, "modulate:a", 1.0, 0.5)
|
|
|
|
if level_label:
|
|
level_label.modulate.a = 0.0
|
|
fade_in.tween_property(level_label, "modulate:a", 1.0, 0.5)
|
|
|
|
# Fade out after 3 seconds
|
|
await get_tree().create_timer(3.0).timeout
|
|
|
|
if vbox:
|
|
var fade_out = create_tween()
|
|
fade_out.set_parallel(true)
|
|
fade_out.tween_property(vbox, "modulate:a", 0.0, 0.5)
|
|
|
|
if level_label:
|
|
fade_out.tween_property(level_label, "modulate:a", 0.0, 0.5)
|
|
|
|
await fade_out.finished
|
|
|
|
visible = false
|