haha
This commit is contained in:
63
Levels/Objects/DialogBox.gd
Normal file
63
Levels/Objects/DialogBox.gd
Normal file
@@ -0,0 +1,63 @@
|
||||
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
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user