diff options
Diffstat (limited to 'components/textreveal.gd')
-rw-r--r-- | components/textreveal.gd | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/components/textreveal.gd b/components/textreveal.gd index 0d9004c..1685a8d 100644 --- a/components/textreveal.gd +++ b/components/textreveal.gd @@ -1,44 +1,52 @@ extends Node2D -onready var font_source : RichTextLabel = $FontSource signal finished_reveal() -export var text = "Text" +export(String, MULTILINE) var text = "Text" export var speed = 100.0 +############ +# INTERNAL # +############ + + +onready var font_source : RichTextLabel = $FontSource var revealed = 0 var started = false var finished = false - -var label +var t = 0 +onready var label = Label.new() # Called when the node enters the scene tree for the first time. func _ready(): - label = RichTextLabel.new() label.theme = font_source.theme + label.align = Label.ALIGN_CENTER add_child(label) - label.rect_position = -label.rect_size / 2 func _show_text(text): - label.add_text(text) + label.text = text label.rect_position = -label.rect_size / 2 # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): - if started: - var reveal = speed * delta - var oldreveal = revealed - revealed += reveal - var t = text.substr(oldreveal, revealed) - _show_text(t) - if text.length() <= revealed: - started = false - finished = true - emit_signal("finished_reveal") + if not started: + return + t += delta * speed + var additional = int(t) + t -= additional + revealed += additional + _show_text(text.substr(0, revealed)) + if text.length() == revealed: + started = false + finished = true + emit_signal("finished_reveal") func start(): started = true + label.text = "" + revealed = 0 + t = 0 finished = false |