[change]gdscript 支持多独立主键
parent
60faab741e
commit
ba1a552d3e
|
|
@ -65,6 +65,8 @@ namespace Luban.Job.Cfg.Defs
|
||||||
|
|
||||||
public bool IsUnionIndex { get; private set; }
|
public bool IsUnionIndex { get; private set; }
|
||||||
|
|
||||||
|
public bool MultiKey { get; private set; }
|
||||||
|
|
||||||
public List<IndexInfo> IndexList { get; } = new();
|
public List<IndexInfo> IndexList { get; } = new();
|
||||||
|
|
||||||
public bool NeedExport => Assembly.NeedExport(this.Groups);
|
public bool NeedExport => Assembly.NeedExport(this.Groups);
|
||||||
|
|
@ -141,8 +143,11 @@ namespace Luban.Job.Cfg.Defs
|
||||||
{
|
{
|
||||||
if (ValueTType.GetBeanAs<DefBean>().TryGetField(idx, out var f, out var i))
|
if (ValueTType.GetBeanAs<DefBean>().TryGetField(idx, out var f, out var i))
|
||||||
{
|
{
|
||||||
IndexField = f;
|
if (IndexField == null)
|
||||||
IndexFieldIdIndex = i;
|
{
|
||||||
|
IndexField = f;
|
||||||
|
IndexFieldIdIndex = i;
|
||||||
|
}
|
||||||
this.IndexList.Add(new IndexInfo(f.CType, f, i));
|
this.IndexList.Add(new IndexInfo(f.CType, f, i));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -152,6 +157,7 @@ namespace Luban.Job.Cfg.Defs
|
||||||
}
|
}
|
||||||
// 如果不是 union index, 每个key必须唯一,否则 (key1,..,key n)唯一
|
// 如果不是 union index, 每个key必须唯一,否则 (key1,..,key n)唯一
|
||||||
IsUnionIndex = IndexList.Count > 1 && !Index.Contains(',');
|
IsUnionIndex = IndexList.Count > 1 && !Index.Contains(',');
|
||||||
|
MultiKey = IndexList.Count > 1 && Index.Contains(',');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: throw new Exception($"unknown mode:'{Mode}'");
|
default: throw new Exception($"unknown mode:'{Mode}'");
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,37 @@ class {{name}}:
|
||||||
|
|
||||||
func get(key):
|
func get(key):
|
||||||
return self._data_map.get(key)
|
return self._data_map.get(key)
|
||||||
|
{{~else if x.multi_key ~}}
|
||||||
|
{{~ for INDEX in x.index_list ~}}
|
||||||
|
var _data_{{INDEX.index_field.convention_name}}_map = {}
|
||||||
|
{{~ end ~}}
|
||||||
|
var _data_list = []
|
||||||
|
|
||||||
|
func _init(_json_) -> void:
|
||||||
|
{{~ for INDEX in x.index_list ~}}
|
||||||
|
self._data_{{INDEX.index_field.convention_name}}_map = {}
|
||||||
|
{{~ end ~}}
|
||||||
|
self._data_list = []
|
||||||
|
|
||||||
|
for _json2_ in _json_:
|
||||||
|
var _v
|
||||||
|
{{gdscript_deserialize_value '_v' '_json2_' value_type}}
|
||||||
|
self._data_list.append(_v)
|
||||||
|
{{~ for INDEX in x.index_list ~}}
|
||||||
|
self._data_{{INDEX.index_field.convention_name}}_map[_v.{{INDEX.index_field.convention_name}}] = _v
|
||||||
|
{{~ end ~}}
|
||||||
|
|
||||||
|
func get_data_map() -> Dictionary:
|
||||||
|
return self._data_{{x.index_field.convention_name }}_map
|
||||||
|
func get_data_list() -> Array:
|
||||||
|
return self._data_list
|
||||||
|
{{~ for INDEX in x.index_list ~}}
|
||||||
|
func get_by_{{INDEX.index_field.convention_name}}({{INDEX.index_field.convention_name}}):
|
||||||
|
return self._data_{{INDEX.index_field.name}}_map.get({{INDEX.index_field.convention_name}})
|
||||||
|
{{~ end ~}}
|
||||||
|
|
||||||
|
func get(key):
|
||||||
|
return self._data_{{x.index_field.convention_name }}_map.get(key)
|
||||||
{{~else if x.is_list_table ~}}
|
{{~else if x.is_list_table ~}}
|
||||||
var _data_list
|
var _data_list
|
||||||
func _init(_json_) -> void:
|
func _init(_json_) -> void:
|
||||||
|
|
@ -42,7 +73,6 @@ class {{name}}:
|
||||||
|
|
||||||
func get(index):
|
func get(index):
|
||||||
return self._data_list[index]
|
return self._data_list[index]
|
||||||
|
|
||||||
{{~else~}}
|
{{~else~}}
|
||||||
var _data: Dictionary
|
var _data: Dictionary
|
||||||
func _init(_json_) -> void:
|
func _init(_json_) -> void:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue