Add cutscene change event
This commit is contained in:
43
scripts/Cutscene/Event/CutsceneWhileEvent.gd
Normal file
43
scripts/Cutscene/Event/CutsceneWhileEvent.gd
Normal file
@@ -0,0 +1,43 @@
|
||||
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();
|
Reference in New Issue
Block a user