43 lines
1.3 KiB
GDScript3
43 lines
1.3 KiB
GDScript3
![]() |
class_name CreditsMenu extends Control
|
||
|
|
||
|
@onready var creditTemplate: PackedScene = load("res://Scenes/UI/CreditTemplate.tscn")
|
||
|
@onready var creditHolder: Control = $CreditHolder
|
||
|
|
||
|
@export var animator: AnimationPlayer
|
||
|
@export var spawnTimer: float = 2
|
||
|
@export var credits: Array[Credit]
|
||
|
|
||
|
var timerTarget: float = 0
|
||
|
var timer: float = 0
|
||
|
var credIndex: int = 0
|
||
|
var running: bool = false
|
||
|
|
||
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||
|
func _process(delta: float) -> void:
|
||
|
if (!running): return
|
||
|
timer += delta
|
||
|
if (timer >= timerTarget):
|
||
|
timer -= timerTarget
|
||
|
var credit: CreditTemplate = creditTemplate.instantiate()
|
||
|
credit.creditInfo = credits[credIndex]
|
||
|
creditHolder.add_child(credit)
|
||
|
credit.position.y = 670
|
||
|
timerTarget = 5 + (2 + credits[credIndex].description.size() + credits[credIndex].links.size()) * spawnTimer
|
||
|
credIndex += 1
|
||
|
if (credIndex >= credits.size()): credIndex = 0
|
||
|
|
||
|
func animFinished(s: String) -> void:
|
||
|
if (s == "ShowCredits" && !self.visible):
|
||
|
running = false
|
||
|
credIndex = 0
|
||
|
timer = 0
|
||
|
timerTarget = 0
|
||
|
for child: Control in creditHolder.get_children():
|
||
|
if (!(child is CreditTemplate)): continue
|
||
|
child.queue_free()
|
||
|
elif (s == "ShowCredits" && self.visible):
|
||
|
running = true
|
||
|
|
||
|
func toggle() -> void:
|
||
|
running = !running
|