No Description
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.

EXP_StoryReader.gd 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. extends Reference
  2. var _story : Dictionary = {}
  3. var _names : Dictionary = {}
  4. func get_dids() -> Array:
  5. return self._story.keys()
  6. func get_did_via_record_name(name : String) -> int:
  7. assert(self._names.has(name))
  8. return self._names[name]
  9. func get_nid_from_slot(did : int, nid : int, slot : int) -> int:
  10. assert(self.has_did(did))
  11. assert(self.has_nid(did, nid))
  12. assert(self.has_slot(did, nid, slot))
  13. return self._story[did]["nodes"][nid]["links"][slot]
  14. func get_nid_via_exact_text(did : int, query : String) -> int:
  15. assert(self.has_did(did))
  16. for nid in self._story[did]["nodes"].keys():
  17. if self._story[did]["nodes"][nid]["text"] == query:
  18. return nid
  19. return -1
  20. func get_nids(did : int) -> Array:
  21. assert(self.has_did(did))
  22. return self._story[did]["nodes"].keys()
  23. func get_slot_count(did : int, nid : int) -> int:
  24. assert(self.has_did(did))
  25. assert(self.has_nid(did, nid))
  26. return self._story[did]["nodes"][nid]["links"].size()
  27. func get_slots(did : int, nid : int) -> Array:
  28. assert(self.has_did(did))
  29. assert(self.has_nid(did, nid))
  30. return self._story[did]["nodes"][nid]["links"].keys()
  31. func get_text(did : int, nid : int) -> String:
  32. assert(self.has_did(did))
  33. assert(self.has_nid(did, nid))
  34. return self._story[did]["nodes"][nid]["text"]
  35. func has_did(did : int) -> bool:
  36. return self._story.has(did)
  37. func has_nid(did : int, nid : int) -> bool:
  38. assert(self.has_did(did))
  39. return self._story[did]["nodes"].has(nid)
  40. func has_record_name(name : String) -> bool:
  41. return self._names.has(name)
  42. func has_slot(did: int, nid : int, slot : int) -> bool:
  43. assert(self.has_did(did))
  44. assert(self.has_nid(did, nid))
  45. return self._story[did]["nodes"][nid]["links"].has(slot)
  46. func read(file):
  47. if not "TYPE" in file:
  48. print_debug("Story reader failed to open file: ", str(file.filename))
  49. return
  50. if not file.TYPE == "EXP_Baked_Story" or file.TYPE == "EXP_Story_editor":
  51. print_debug("Story reader failed to open file: ", str(file.filename))
  52. return
  53. self._story = file.story
  54. self._names = file.names