parent
d0587324f5
commit
ba2c5c56e7
|
|
@ -63,8 +63,9 @@ namespace Luban.Job.Cfg.Defs
|
||||||
{
|
{
|
||||||
return Ref.GenRef;
|
return Ref.GenRef;
|
||||||
}
|
}
|
||||||
// 特殊处理, 目前只有c#支持.而这个属性已经被多种语言模板引用了,故单独处理一下
|
// 特殊处理, 目前只有c#和java支持.而这个属性已经被多种语言模板引用了,故单独处理一下
|
||||||
if (DefAssemblyBase.LocalAssebmly.CurrentLanguage != Common.ELanguage.CS)
|
if (DefAssemblyBase.LocalAssebmly.CurrentLanguage != Common.ELanguage.CS
|
||||||
|
&& DefAssemblyBase.LocalAssebmly.CurrentLanguage != Common.ELanguage.JAVA)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -109,8 +110,18 @@ namespace Luban.Job.Cfg.Defs
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var table = Assembly.GetCfgTable(Ref.FirstTable);
|
if (Ref != null)
|
||||||
return $"{table.ValueTType.Apply(JavaDefineTypeName.Ins)} {RefVarName};";
|
{
|
||||||
|
return $"{RefType.Apply(JavaDefineTypeName.Ins)} {RefVarName};";
|
||||||
|
}
|
||||||
|
else if (ElementRef != null)
|
||||||
|
{
|
||||||
|
return $"{ElementRefType.Apply(JavaDefineTypeName.Ins)} {RefVarName};";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new NotSupportedException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -128,8 +128,11 @@ namespace Luban.Job.Cfg.Utils
|
||||||
{
|
{
|
||||||
var refVarName = field.RefVarName;
|
var refVarName = field.RefVarName;
|
||||||
var name = field.ConventionName;
|
var name = field.ConventionName;
|
||||||
|
|
||||||
|
if (field.Ref != null)
|
||||||
|
{
|
||||||
var tableName = field.Ref.FirstTable;
|
var tableName = field.Ref.FirstTable;
|
||||||
var table = field.Assembly.GetCfgTable(field.Ref.FirstTable);
|
var table = field.Assembly.GetCfgTable(tableName);
|
||||||
if (field.IsNullable)
|
if (field.IsNullable)
|
||||||
{
|
{
|
||||||
return $"this.{refVarName} = this.{name} != null ? (({table.FullNameWithTopModule})_tables.get(\"{tableName}\")).get({name}) : null;";
|
return $"this.{refVarName} = this.{name} != null ? (({table.FullNameWithTopModule})_tables.get(\"{tableName}\")).get({name}) : null;";
|
||||||
|
|
@ -139,6 +142,29 @@ namespace Luban.Job.Cfg.Utils
|
||||||
return $"this.{refVarName} = (({table.FullNameWithTopModule})_tables.get(\"{tableName}\")).get({name});";
|
return $"this.{refVarName} = (({table.FullNameWithTopModule})_tables.get(\"{tableName}\")).get({name});";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var tableName = field.ElementRef.FirstTable;
|
||||||
|
var table = field.Assembly.GetCfgTable(tableName);
|
||||||
|
switch (field.CType)
|
||||||
|
{
|
||||||
|
case TArray:
|
||||||
|
{
|
||||||
|
return $@"{{ int __n = {name}.length; {table.FullNameWithTopModule} __table = ({table.FullNameWithTopModule})_tables.get(""{tableName}""); this.{refVarName} = new {table.ValueTType.Apply(JavaDefineTypeName.Ins)}[__n]; for(int i = 0 ; i < __n ; i++) {{ this.{refVarName}[i] = __table.get({name}[i]); }} }}";
|
||||||
|
}
|
||||||
|
case TList:
|
||||||
|
case TSet:
|
||||||
|
{
|
||||||
|
return $@"{{ {table.FullNameWithTopModule} __table = ({table.FullNameWithTopModule})_tables.get(""{tableName}""); this.{refVarName} = new {field.ElementRefType.Apply(JavaDefineTypeName.Ins)}(); for({field.CType.ElementType.TypeName} __e : {name}) {{ this.{refVarName}.add(__table.get(__e)); }} }}";
|
||||||
|
}
|
||||||
|
case TMap map:
|
||||||
|
{
|
||||||
|
return $@"{{ {table.FullNameWithTopModule} __table = ({table.FullNameWithTopModule})_tables.get(""{tableName}""); this.{refVarName} = new {field.ElementRefType.Apply(JavaDefineTypeName.Ins)}(); for(Map.Entry<{map.KeyType.TypeName},{map.ValueType.TypeName}> __e : {name}.entrySet()) {{ {map.KeyType.TypeName} __eKey = entry.getKey(); {map.ValueType.TypeName} __eValue = entry.getValue(); this.{refVarName}.add(__eKey, __table.get(__eValue)); }} }}";
|
||||||
|
}
|
||||||
|
default: throw new NotSupportedException($"type:'{field.CType.TypeName}' not support ref");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static string CppDeserialize(string bufName, string fieldName, TType type)
|
public static string CppDeserialize(string bufName, string fieldName, TType type)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue