extends RichTextLabel @onready var message_timer = $MessageTimer @onready var json_content: Dictionary @onready var message_lines: Dictionary @onready var messages_seen: Array @onready var lines_file_path = "res://text/message_lines.json" @export var lines_displayed = [] @export var sequences = [ {"value": 0, "type": "score", "name": "introduction", "seen": true, "done": false}, {"value": 1, "type": "score", "name": "get_to_10", "seen": false, "done": false}, {"value": 10, "type": "score", "name": "explain_mechanism", "seen": false, "done": false}, {"value": 25, "type": "score", "name": "bought_generator", "seen": false, "done": false}, {"value": 100, "type": "scorepersecond", "name": "afford_analyzer", "seen": false, "done": false} ] signal section_ended(section_name) # Called when the node enters the scene tree for the first time. func _ready(): set_scroll_follow(true) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(_delta): pass func show_message_by_id(section: String, idnum: int): var unique_id = section + str(idnum) if unique_id not in messages_seen: show_message(message_lines[section][idnum]) messages_seen.append(unique_id) func show_message(msg): lines_displayed.append(_centered_message(msg)) #var new_text = _nl_append(message.text, _centered_message(msg)) text = ("\n").join(lines_displayed) show() func _nl_append(msg1, msg2): return msg1 + "\n" + msg2 func _centered_message(msg): return "[center]" + msg + "[/center]" func display_message_section(section_name): print("Displaying " + section_name + ".") var num_messages = message_lines[section_name].size() for i in num_messages: show_message_by_id(section_name, i) await get_tree().create_timer(1.0).timeout section_ended.emit(section_name) func _on_interface_ready(): print("Narration received interface_ready signal.") var main_sequence_messages = json_content["main_sequence_messages"] # These dialogue sets are now lists of lists print("Got " + str(main_sequence_messages.size()) + " message sections from JSON") for i in sequences.size(): var section_name = sequences[i]["name"] message_lines[section_name] = main_sequence_messages[i] display_message_section("introduction")