38 lines
726 B
GDScript
38 lines
726 B
GDScript
class_name CutsceneSingleton extends Node
|
|
|
|
const CUTSCENE_CONTINUE = -1
|
|
const CUTSCENE_END = -2
|
|
|
|
var running:bool = false
|
|
|
|
func setConversation(conversation:Array[ConversationElement]) -> void:
|
|
var functions:Array[Callable] = []
|
|
for element in conversation:
|
|
functions.append(element.sceneItem)
|
|
setScene(functions)
|
|
|
|
func setScene(functions:Array[Callable]) -> void:
|
|
if functions.size() == 0:
|
|
return
|
|
|
|
running = true
|
|
|
|
var index = 0
|
|
while true:
|
|
var result = await functions[index].call()
|
|
|
|
match result:
|
|
CUTSCENE_CONTINUE:
|
|
index += 1
|
|
|
|
CUTSCENE_END:
|
|
break
|
|
|
|
_:
|
|
index = result
|
|
|
|
if index >= functions.size() || index < 0:
|
|
break
|
|
|
|
running = false
|