73 lines
1.7 KiB
GDScript
73 lines
1.7 KiB
GDScript
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']
|