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.
72 lines
1.7 KiB
72 lines
1.7 KiB
extends Node |
|
class_name DialogicDefinitionsUtil |
|
|
|
## This class handles definitions |
|
|
|
static func get_definition_by_key(data: Dictionary, key: String, value: String): |
|
var variables : Array = data['variables'] |
|
var glossary : Array = data['glossary'] |
|
for v in variables: |
|
if v[key] == value: |
|
return v |
|
for g in glossary: |
|
if g[key] == value: |
|
return g |
|
return null |
|
|
|
|
|
static func get_definition_by_id(data: Dictionary, id: String): |
|
return get_definition_by_key(data, 'id', id) |
|
|
|
|
|
static func get_definition_by_name(data: Dictionary, id: String): |
|
return get_definition_by_key(data, 'name', id) |
|
|
|
|
|
static func set_definition(section: String, data: Dictionary, elem: Dictionary): |
|
delete_definition(data, elem['id']) |
|
var array: Array = data[section] |
|
var found = false; |
|
for e in array: |
|
if e['id'] == elem['id']: |
|
found = true |
|
array.erase(e) |
|
array.append(elem) |
|
break |
|
if not found: |
|
array.append(elem) |
|
|
|
|
|
static func set_definition_variable(data: Dictionary, id: String, name: String, value): |
|
set_definition('variables', data, { |
|
'id': id, |
|
'name': name, |
|
'value': value, |
|
'type': 0 |
|
}) |
|
|
|
|
|
static func set_definition_glossary(data: Dictionary, id: String, name: String, title: String, text: String, extra: String): |
|
set_definition('glossary', data, { |
|
'id': id, |
|
'name': name, |
|
'title': title, |
|
'text': text, |
|
'extra': extra, |
|
'type': 1 |
|
}) |
|
|
|
|
|
static func delete_definition(data: Dictionary, id: String): |
|
var variables : Array = data['variables'] |
|
var glossary : Array = data['glossary'] |
|
var item = get_definition_by_id(data, id); |
|
if item != null: |
|
if (item['type'] == 0): |
|
variables.erase(item) |
|
else: |
|
glossary.erase(item) |
|
|
|
|
|
static func definitions_json_to_array(data: Dictionary) -> Array: |
|
return data['variables'] + data['glossary']
|
|
|