extends CanvasLayer signal advanced @onready var subtitle_panel: PanelContainer = $SubtitlePanel @onready var who_label: Label = $SubtitlePanel/V/Who @onready var text_label: Label = $SubtitlePanel/V/Text @onready var hint_label: Label = $SubtitlePanel/V/Hint @onready var note_overlay: Control = $NoteOverlay @onready var note_text: Label = $NoteOverlay/Center/P/V2/Text @onready var prompt_label: Label = $PromptLabel @onready var hud_label: Label = $HudLabel var _waiting: bool = false func _ready() -> void: subtitle_panel.visible = false note_overlay.visible = false prompt_label.visible = false hud_label.visible = false func say(who: String, line: String) -> Signal: who_label.text = "[%s]" % who text_label.text = line hint_label.text = "ЛКМ или ПРОБЕЛ — дальше" subtitle_panel.visible = true note_overlay.visible = false _waiting = true return advanced func think(line: String) -> Signal: return say("Я", line) func show_note(text: String) -> Signal: note_text.text = text note_overlay.visible = true subtitle_panel.visible = false _waiting = true return advanced func set_prompt(text: String) -> void: if text == "": prompt_label.visible = false return prompt_label.text = "[ЛКМ] %s" % text prompt_label.visible = true func clear_prompt() -> void: prompt_label.visible = false func set_hud(text: String) -> void: hud_label.text = text hud_label.visible = text != "" func _input(event: InputEvent) -> void: if not _waiting: return var advance: bool = false if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: advance = true elif event is InputEventKey and event.pressed and (event.keycode == KEY_SPACE or event.keycode == KEY_ENTER): advance = true if advance: get_viewport().set_input_as_handled() subtitle_panel.visible = false note_overlay.visible = false _waiting = false advanced.emit()