RAIDER_GameJam/ui/dialogbox.gd
Felix Kaiser 3f62e5e31d blergh
2025-02-17 16:46:19 +01:00

45 lines
1.2 KiB
GDScript

extends TextureRect
@onready var label: Label = $MarginContainer/Label
var current_string : int = 0
var current_strings : Array[String]
@onready var timer: Timer = $Timer
signal dialog_page_finished
@onready var enternote: Label = $ENTERNOTE
func _ready() -> void:
HudSignalBus.roll_dialog.connect(roll_dialog)
func roll_dialog(strings: Array[String]):
enternote.visible = false
get_tree().create_tween().tween_property(self, "position:y", 395, 1)
await get_tree().create_timer(1).timeout
current_strings = strings
current_string = 0
roll_page()
func roll_page():
enternote.visible = false
label.text = current_strings[current_string]
label.visible_characters = 0
timer.start()
current_string = current_string + 1
func _process(delta: float) -> void:
if Input.is_action_just_pressed("advance_dialog") and current_strings.size() > 0 and timer.is_stopped():
if current_string < current_strings.size():
roll_page()
else:
current_strings = []
label.text = ""
get_tree().create_tween().tween_property(self, "position:y", 648, 1)
func _on_timer_timeout() -> void:
if label.visible_characters < label.text.length():
label.visible_characters += 3
else:
enternote.visible = true
timer.stop()
dialog_page_finished.emit()