Files
Embodiment/Levels/Objects/DialogBox.gd
Jasmine Hyder 2c65c5f4b6 haha
2021-12-10 15:38:00 -06:00

64 lines
1.3 KiB
GDScript

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