extends ColorRect export var dialogPath = "" export(float) var textSpeed = 0.05 var dialog var phraseNum = 0 var finished = false func _ready(): # self.visible = false $Timer.wait_time = textSpeed dialog = getDialog() assert(dialog, "Dialong not found") nextPhrase() func _process(delta): $Indicator.visible = finished if Input.is_action_just_pressed("ui_accept"): if finished: nextPhrase() else: $Text.visible_characters = len($Text.text) func getDialog() -> Array: var f = File.new() assert(f.file_exists(dialogPath), "File path does not exist") f.open(dialogPath, File.READ) var json = f.get_as_text() var output = parse_json(json) if typeof(output) == TYPE_ARRAY: return output else: return [] func nextPhrase() -> void: if phraseNum >= len(dialog): queue_free() return finished = false $Name.bbcode_text = dialog[phraseNum]["Name"] $Text.bbcode_text = dialog[phraseNum]["Text"] $Text.visible_characters = 0 while $Text.visible_characters < len($Text.text): $Text.visible_characters += 1 $Timer.start() yield($Timer, "timeout") finished = true phraseNum += 1 return