【新增】vector{2,3,4}和datetime类型也支持 externaltype 映射
parent
d5184e136e
commit
b2014ab7bb
|
|
@ -1,5 +1,6 @@
|
||||||
using Luban.Job.Common.Types;
|
using Luban.Job.Common.Types;
|
||||||
using Luban.Job.Common.TypeVisitors;
|
using Luban.Job.Common.TypeVisitors;
|
||||||
|
using Luban.Job.Common.Utils;
|
||||||
using Scriban.Runtime;
|
using Scriban.Runtime;
|
||||||
|
|
||||||
namespace Luban.Job.Common.Defs
|
namespace Luban.Job.Common.Defs
|
||||||
|
|
@ -308,5 +309,10 @@ namespace Luban.Job.Common.Defs
|
||||||
{
|
{
|
||||||
return DefAssemblyBase.LocalAssebmly.GetOptionOr(optionName, defaultValue);
|
return DefAssemblyBase.LocalAssebmly.GetOptionOr(optionName, defaultValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool GenDatetimeMills(TType type)
|
||||||
|
{
|
||||||
|
return type is TDateTime && !type.IsNullable && ExternalTypeUtil.GetExternalTypeMappfer("datetime") == null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,11 @@ namespace Luban.Job.Common.TypeVisitors
|
||||||
|
|
||||||
public string Accept(TVector2 type)
|
public string Accept(TVector2 type)
|
||||||
{
|
{
|
||||||
|
var mapper = ExternalTypeUtil.GetExternalTypeMappfer("vector2");
|
||||||
|
if (mapper != null)
|
||||||
|
{
|
||||||
|
return mapper.TargetTypeName;
|
||||||
|
}
|
||||||
if (DefAssemblyBase.IsUseUnityVectors)
|
if (DefAssemblyBase.IsUseUnityVectors)
|
||||||
{
|
{
|
||||||
return "UnityEngine.Vector2";
|
return "UnityEngine.Vector2";
|
||||||
|
|
@ -114,6 +119,11 @@ namespace Luban.Job.Common.TypeVisitors
|
||||||
|
|
||||||
public string Accept(TVector3 type)
|
public string Accept(TVector3 type)
|
||||||
{
|
{
|
||||||
|
var mapper = ExternalTypeUtil.GetExternalTypeMappfer("vector3");
|
||||||
|
if (mapper != null)
|
||||||
|
{
|
||||||
|
return mapper.TargetTypeName;
|
||||||
|
}
|
||||||
if (DefAssemblyBase.IsUseUnityVectors)
|
if (DefAssemblyBase.IsUseUnityVectors)
|
||||||
{
|
{
|
||||||
return "UnityEngine.Vector3";
|
return "UnityEngine.Vector3";
|
||||||
|
|
@ -123,6 +133,11 @@ namespace Luban.Job.Common.TypeVisitors
|
||||||
|
|
||||||
public string Accept(TVector4 type)
|
public string Accept(TVector4 type)
|
||||||
{
|
{
|
||||||
|
var mapper = ExternalTypeUtil.GetExternalTypeMappfer("vector4");
|
||||||
|
if (mapper != null)
|
||||||
|
{
|
||||||
|
return mapper.TargetTypeName;
|
||||||
|
}
|
||||||
if (DefAssemblyBase.IsUseUnityVectors)
|
if (DefAssemblyBase.IsUseUnityVectors)
|
||||||
{
|
{
|
||||||
return "UnityEngine.Vector4";
|
return "UnityEngine.Vector4";
|
||||||
|
|
@ -132,6 +147,11 @@ namespace Luban.Job.Common.TypeVisitors
|
||||||
|
|
||||||
public virtual string Accept(TDateTime type)
|
public virtual string Accept(TDateTime type)
|
||||||
{
|
{
|
||||||
|
var mapper = ExternalTypeUtil.GetExternalTypeMappfer("datetime");
|
||||||
|
if (mapper != null)
|
||||||
|
{
|
||||||
|
return mapper.TargetTypeName;
|
||||||
|
}
|
||||||
return "int";
|
return "int";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ namespace Luban.Job.Common.TypeVisitors
|
||||||
public string Accept(TBean type, string bufName, string fieldName)
|
public string Accept(TBean type, string bufName, string fieldName)
|
||||||
{
|
{
|
||||||
string src = $"{type.Bean.FullName}.Deserialize{type.Bean.Name}({bufName})";
|
string src = $"{type.Bean.FullName}.Deserialize{type.Bean.Name}({bufName})";
|
||||||
return $"{fieldName} = {ExternalTypeUtil.CsCloneToExternal(type.Bean, src)};";
|
return $"{fieldName} = {ExternalTypeUtil.CsCloneToExternal(type.Bean.FullName, src)};";
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Accept(TArray type, string bufName, string fieldName)
|
public string Accept(TArray type, string bufName, string fieldName)
|
||||||
|
|
@ -109,22 +109,26 @@ namespace Luban.Job.Common.TypeVisitors
|
||||||
|
|
||||||
public string Accept(TVector2 type, string bufName, string fieldName)
|
public string Accept(TVector2 type, string bufName, string fieldName)
|
||||||
{
|
{
|
||||||
return $"{fieldName} = {bufName}.Read{VectorName}2();";
|
string src = $"{bufName}.Read{VectorName}2()";
|
||||||
|
return $"{fieldName} = {ExternalTypeUtil.CsCloneToExternal("vector2", src)};";
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Accept(TVector3 type, string bufName, string fieldName)
|
public string Accept(TVector3 type, string bufName, string fieldName)
|
||||||
{
|
{
|
||||||
return $"{fieldName} = {bufName}.Read{VectorName}3();";
|
string src = $"{bufName}.Read{VectorName}3()";
|
||||||
|
return $"{fieldName} = {ExternalTypeUtil.CsCloneToExternal("vector3", src)};";
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Accept(TVector4 type, string bufName, string fieldName)
|
public string Accept(TVector4 type, string bufName, string fieldName)
|
||||||
{
|
{
|
||||||
return $"{fieldName} = {bufName}.Read{VectorName}4();";
|
string src = $"{bufName}.Read{VectorName}4()";
|
||||||
|
return $"{fieldName} = {ExternalTypeUtil.CsCloneToExternal("vector4", src)};";
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Accept(TDateTime type, string bufName, string fieldName)
|
public string Accept(TDateTime type, string bufName, string fieldName)
|
||||||
{
|
{
|
||||||
return $"{fieldName} = {bufName}.ReadInt();";
|
string src = $"{bufName}.ReadInt()";
|
||||||
|
return $"{fieldName} = {ExternalTypeUtil.CsCloneToExternal("datetime", src)};";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,22 +27,27 @@ namespace Luban.Job.Common.Utils
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
public static ExternalTypeMapper GetExternalTypeMappfer(string typeName)
|
||||||
|
{
|
||||||
|
return DefAssemblyBase.LocalAssebmly.GetExternalTypeMapper(typeName);
|
||||||
|
}
|
||||||
|
|
||||||
public static string CsMapperToExternalType(DefTypeBase type)
|
public static string CsMapperToExternalType(DefTypeBase type)
|
||||||
{
|
{
|
||||||
var mapper = DefAssemblyBase.LocalAssebmly.GetExternalTypeMapper(type.FullName);
|
var mapper = DefAssemblyBase.LocalAssebmly.GetExternalTypeMapper(type.FullName);
|
||||||
return mapper != null ? mapper.TargetTypeName : type.CsFullName;
|
return mapper != null ? mapper.TargetTypeName : type.CsFullName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string CsCloneToExternal(DefTypeBase type, string src)
|
public static string CsCloneToExternal(string typeName, string src)
|
||||||
{
|
{
|
||||||
var mapper = DefAssemblyBase.LocalAssebmly.GetExternalTypeMapper(type.FullName);
|
var mapper = DefAssemblyBase.LocalAssebmly.GetExternalTypeMapper(typeName);
|
||||||
if (mapper == null)
|
if (mapper == null)
|
||||||
{
|
{
|
||||||
return src;
|
return src;
|
||||||
}
|
}
|
||||||
if (string.IsNullOrWhiteSpace(mapper.CreateExternalObjectFunction))
|
if (string.IsNullOrWhiteSpace(mapper.CreateExternalObjectFunction))
|
||||||
{
|
{
|
||||||
throw new Exception($"type:{type.FullName} externaltype:{DefAssemblyBase.LocalAssebmly.GetExternalType(type.FullName)} lan:{mapper.Lan} selector:{mapper.Selector} 未定义 create_external_object_function 属性");
|
throw new Exception($"type:{typeName} externaltype:{DefAssemblyBase.LocalAssebmly.GetExternalType(typeName)} lan:{mapper.Lan} selector:{mapper.Selector} 未定义 create_external_object_function 属性");
|
||||||
}
|
}
|
||||||
return $"{mapper.CreateExternalObjectFunction}({src})";
|
return $"{mapper.CreateExternalObjectFunction}({src})";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ public {{x.cs_class_modifier}} partial class {{name}} : {{if parent_def_type}} {
|
||||||
{{~if field.gen_ref~}}
|
{{~if field.gen_ref~}}
|
||||||
public {{field.cs_ref_validator_define}}
|
public {{field.cs_ref_validator_define}}
|
||||||
{{~end~}}
|
{{~end~}}
|
||||||
{{~if field.ctype.type_name == "datetime" && !field.ctype.is_nullable ~}}
|
{{~if (gen_datetime_mills field.ctype) ~}}
|
||||||
public long {{field.convention_name}}_Millis => {{field.convention_name}} * 1000L;
|
public long {{field.convention_name}}_Millis => {{field.convention_name}} * 1000L;
|
||||||
{{~end~}}
|
{{~end~}}
|
||||||
{{~if field.gen_text_key~}}
|
{{~if field.gen_text_key~}}
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ public {{x.cs_class_modifier}} partial class {{name}} : {{if parent_def_type}} {
|
||||||
{{~if field.gen_ref~}}
|
{{~if field.gen_ref~}}
|
||||||
public {{field.cs_ref_validator_define}}
|
public {{field.cs_ref_validator_define}}
|
||||||
{{~end~}}
|
{{~end~}}
|
||||||
{{~if field.ctype.type_name == "datetime" && !field.ctype.is_nullable ~}}
|
{{~if (gen_datetime_mills field.ctype) ~}}
|
||||||
public long {{field.convention_name}}_Millis => {{field.convention_name}} * 1000L;
|
public long {{field.convention_name}}_Millis => {{field.convention_name}} * 1000L;
|
||||||
{{~end~}}
|
{{~end~}}
|
||||||
{{~if field.gen_text_key~}}
|
{{~if field.gen_text_key~}}
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ public {{x.cs_class_modifier}} partial class {{name}} : {{if parent_def_type}} {
|
||||||
{{~if field.gen_ref~}}
|
{{~if field.gen_ref~}}
|
||||||
public {{field.cs_ref_validator_define}}
|
public {{field.cs_ref_validator_define}}
|
||||||
{{~end~}}
|
{{~end~}}
|
||||||
{{~if field.ctype.type_name == "datetime" && !field.ctype.is_nullable ~}}
|
{{~if (gen_datetime_mills field.ctype) ~}}
|
||||||
public long {{field.convention_name}}_Millis => {{field.convention_name}} * 1000L;
|
public long {{field.convention_name}}_Millis => {{field.convention_name}} * 1000L;
|
||||||
{{~end~}}
|
{{~end~}}
|
||||||
{{~if field.gen_text_key~}}
|
{{~if field.gen_text_key~}}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue