You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

narration.gd 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. extends RichTextLabel
  2. @onready var message_timer = $MessageTimer
  3. @onready var json_content: Dictionary
  4. @onready var message_lines: Dictionary
  5. @onready var messages_seen: Array
  6. @onready var lines_file_path = "res://text/message_lines.json"
  7. @export var lines_displayed = []
  8. @export var sequences = [
  9. {"value": 0, "type": "score", "name": "introduction", "seen": true, "done": false},
  10. {"value": 1, "type": "score", "name": "get_to_10", "seen": false, "done": false},
  11. {"value": 10, "type": "score", "name": "explain_mechanism", "seen": false, "done": false},
  12. {"value": 25, "type": "score", "name": "bought_generator", "seen": false, "done": false},
  13. {"value": 100, "type": "scorepersecond", "name": "afford_analyzer", "seen": false, "done": false}
  14. ]
  15. signal section_ended(section_name)
  16. # Called when the node enters the scene tree for the first time.
  17. func _ready():
  18. set_scroll_follow(true)
  19. # Called every frame. 'delta' is the elapsed time since the previous frame.
  20. func _process(_delta):
  21. pass
  22. func show_message_by_id(section: String, idnum: int):
  23. var unique_id = section + str(idnum)
  24. if unique_id not in messages_seen:
  25. show_message(message_lines[section][idnum])
  26. messages_seen.append(unique_id)
  27. func show_message(msg):
  28. lines_displayed.append(_centered_message(msg))
  29. #var new_text = _nl_append(message.text, _centered_message(msg))
  30. text = ("\n").join(lines_displayed)
  31. show()
  32. func _nl_append(msg1, msg2):
  33. return msg1 + "\n" + msg2
  34. func _centered_message(msg):
  35. return "[center]" + msg + "[/center]"
  36. func display_message_section(section_name):
  37. print("Displaying " + section_name + ".")
  38. var num_messages = message_lines[section_name].size()
  39. for i in num_messages:
  40. show_message_by_id(section_name, i)
  41. await get_tree().create_timer(1.0).timeout
  42. section_ended.emit(section_name)
  43. func _on_interface_ready():
  44. print("Narration received interface_ready signal.")
  45. var main_sequence_messages = json_content["main_sequence_messages"]
  46. # These dialogue sets are now lists of lists
  47. print("Got " + str(main_sequence_messages.size()) + " message sections from JSON")
  48. for i in sequences.size():
  49. var section_name = sequences[i]["name"]
  50. message_lines[section_name] = main_sequence_messages[i]
  51. display_message_section("introduction")