One_Eleven_Android/addons/dialogic/Other/DialogicDefinitionsUtil.gd
2024-11-10 03:34:28 +03:00

72 lines
1.7 KiB
GDScript

extends Node
class_name DialogicDefinitionsUtil
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"]