44 lines
852 B
GDScript
44 lines
852 B
GDScript
class_name CutsceneWhileEvent extends "res://scripts/Cutscene/CutsceneEvent.gd"
|
|
|
|
var events:Array[CutsceneEvent] = []
|
|
var callback:Callable
|
|
var current:int = 0
|
|
|
|
func _init(callback:Callable, evt:Array[CutsceneEvent]) -> void:
|
|
super._init();
|
|
self.events = evt;
|
|
self.callback = callback;
|
|
|
|
func shouldLoop() -> bool:
|
|
return self.callback.call(self)
|
|
|
|
func update(delta:float) -> void:
|
|
if self.current >= self.events.size():
|
|
return;
|
|
|
|
var evt = self.events[self.current]
|
|
if !evt.started:
|
|
evt.start()
|
|
evt.started = true
|
|
|
|
evt.update(delta)
|
|
|
|
if evt.isDone():
|
|
evt.end()
|
|
self.current += 1
|
|
|
|
if self.current < self.events.size():
|
|
return
|
|
|
|
if !self.shouldLoop():
|
|
return
|
|
|
|
self.current = 0
|
|
for event in self.events:
|
|
event.reset()
|
|
|
|
func isDone() -> bool:
|
|
if self.shouldLoop():
|
|
return false;
|
|
return self.current >= self.events.size();
|