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.

DialogicSingleton.gd 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. extends Node
  2. var current_definitions := {}
  3. var default_definitions := {}
  4. var current_timeline := ''
  5. func _init() -> void:
  6. init(false)
  7. func init(reset: bool=false) -> void:
  8. # Loads saved definitions into memory
  9. DialogicResources.init_saves(reset)
  10. current_definitions = DialogicResources.get_saved_definitions()
  11. default_definitions = DialogicResources.get_default_definitions()
  12. current_timeline = DialogicResources.get_saved_state_general_key('timeline')
  13. func get_definitions_list() -> Array:
  14. return DialogicDefinitionsUtil.definitions_json_to_array(current_definitions)
  15. func get_definitions() -> Dictionary:
  16. return current_definitions
  17. func get_default_definitions() -> Dictionary:
  18. return default_definitions
  19. func get_default_definitions_list() -> Array:
  20. return DialogicDefinitionsUtil.definitions_json_to_array(default_definitions)
  21. func save_definitions():
  22. return DialogicResources.save_saved_definitions(current_definitions)
  23. func get_variable(name: String) -> String:
  24. for d in current_definitions['variables']:
  25. if d['name'] == name:
  26. return d['value']
  27. return ''
  28. func set_variable(name: String, value) -> void:
  29. for d in current_definitions['variables']:
  30. if d['name'] == name:
  31. d['value'] = str(value)
  32. func set_variable_from_id(id: String, value: String, operation: String) -> void:
  33. var target_def: Dictionary;
  34. for d in current_definitions['variables']:
  35. if d['id'] == id:
  36. target_def = d;
  37. if target_def != null:
  38. var converted_set_value = value
  39. var converted_target_value = target_def['value']
  40. var is_number = converted_set_value.is_valid_float() and converted_target_value.is_valid_float()
  41. if is_number:
  42. converted_set_value = float(value)
  43. converted_target_value = float(target_def['value'])
  44. var result = target_def['value']
  45. # Do nothing for -, * and / operations on string
  46. match operation:
  47. '=':
  48. result = converted_set_value
  49. '+':
  50. result = converted_target_value + converted_set_value
  51. '-':
  52. if is_number:
  53. result = converted_target_value - converted_set_value
  54. '*':
  55. if is_number:
  56. result = converted_target_value * converted_set_value
  57. '/':
  58. if is_number:
  59. result = converted_target_value / converted_set_value
  60. target_def['value'] = str(result)
  61. func get_glossary(name: String) -> Dictionary:
  62. for d in current_definitions['glossary']:
  63. if d['name'] == name:
  64. return d
  65. return {
  66. 'title': '',
  67. 'text': '',
  68. 'extra': ''
  69. }
  70. func set_glossary(name: String, title: String, text: String, extra: String) -> void:
  71. for d in current_definitions['glossary']:
  72. if d['name'] == name:
  73. d['title'] = title
  74. d['text'] = text
  75. d['extra'] = extra
  76. func set_current_timeline(timeline: String):
  77. current_timeline = timeline
  78. DialogicResources.set_saved_state_general_key('timeline', timeline)
  79. func get_current_timeline() -> String:
  80. return current_timeline