【新增】vector{2,3,4}和datetime类型也支持 externaltype 映射
parent
d5184e136e
commit
b2014ab7bb
|
|
@ -1,5 +1,6 @@
|
|||
using Luban.Job.Common.Types;
|
||||
using Luban.Job.Common.TypeVisitors;
|
||||
using Luban.Job.Common.Utils;
|
||||
using Scriban.Runtime;
|
||||
|
||||
namespace Luban.Job.Common.Defs
|
||||
|
|
@ -308,5 +309,10 @@ namespace Luban.Job.Common.Defs
|
|||
{
|
||||
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)
|
||||
{
|
||||
var mapper = ExternalTypeUtil.GetExternalTypeMappfer("vector2");
|
||||
if (mapper != null)
|
||||
{
|
||||
return mapper.TargetTypeName;
|
||||
}
|
||||
if (DefAssemblyBase.IsUseUnityVectors)
|
||||
{
|
||||
return "UnityEngine.Vector2";
|
||||
|
|
@ -114,6 +119,11 @@ namespace Luban.Job.Common.TypeVisitors
|
|||
|
||||
public string Accept(TVector3 type)
|
||||
{
|
||||
var mapper = ExternalTypeUtil.GetExternalTypeMappfer("vector3");
|
||||
if (mapper != null)
|
||||
{
|
||||
return mapper.TargetTypeName;
|
||||
}
|
||||
if (DefAssemblyBase.IsUseUnityVectors)
|
||||
{
|
||||
return "UnityEngine.Vector3";
|
||||
|
|
@ -123,6 +133,11 @@ namespace Luban.Job.Common.TypeVisitors
|
|||
|
||||
public string Accept(TVector4 type)
|
||||
{
|
||||
var mapper = ExternalTypeUtil.GetExternalTypeMappfer("vector4");
|
||||
if (mapper != null)
|
||||
{
|
||||
return mapper.TargetTypeName;
|
||||
}
|
||||
if (DefAssemblyBase.IsUseUnityVectors)
|
||||
{
|
||||
return "UnityEngine.Vector4";
|
||||
|
|
@ -132,6 +147,11 @@ namespace Luban.Job.Common.TypeVisitors
|
|||
|
||||
public virtual string Accept(TDateTime type)
|
||||
{
|
||||
var mapper = ExternalTypeUtil.GetExternalTypeMappfer("datetime");
|
||||
if (mapper != null)
|
||||
{
|
||||
return mapper.TargetTypeName;
|
||||
}
|
||||
return "int";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ namespace Luban.Job.Common.TypeVisitors
|
|||
public string Accept(TBean type, string bufName, string fieldName)
|
||||
{
|
||||
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)
|
||||
|
|
@ -109,22 +109,26 @@ namespace Luban.Job.Common.TypeVisitors
|
|||
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
var mapper = DefAssemblyBase.LocalAssebmly.GetExternalTypeMapper(type.FullName);
|
||||
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)
|
||||
{
|
||||
return src;
|
||||
}
|
||||
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})";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ public {{x.cs_class_modifier}} partial class {{name}} : {{if parent_def_type}} {
|
|||
{{~if field.gen_ref~}}
|
||||
public {{field.cs_ref_validator_define}}
|
||||
{{~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;
|
||||
{{~end~}}
|
||||
{{~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~}}
|
||||
public {{field.cs_ref_validator_define}}
|
||||
{{~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;
|
||||
{{~end~}}
|
||||
{{~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~}}
|
||||
public {{field.cs_ref_validator_define}}
|
||||
{{~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;
|
||||
{{~end~}}
|
||||
{{~if field.gen_text_key~}}
|
||||
|
|
|
|||
Loading…
Reference in New Issue