From 00a56c0a3719e126039759ebe02ed7e493870fd4 Mon Sep 17 00:00:00 2001 From: walon Date: Fri, 24 Dec 2021 13:57:31 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BF=AE=E5=A4=8D=E3=80=91=E4=BF=AE?= =?UTF-8?q?=E5=A4=8Ddata=5Fresources=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/DataVisitors/ResourceExportor.cs | 174 +++++++++--------- .../Source/Utils/DataExporterUtil.cs | 3 +- 2 files changed, 88 insertions(+), 89 deletions(-) diff --git a/src/Luban.Job.Cfg/Source/DataVisitors/ResourceExportor.cs b/src/Luban.Job.Cfg/Source/DataVisitors/ResourceExportor.cs index e52ec82..655a70d 100644 --- a/src/Luban.Job.Cfg/Source/DataVisitors/ResourceExportor.cs +++ b/src/Luban.Job.Cfg/Source/DataVisitors/ResourceExportor.cs @@ -7,160 +7,158 @@ using System.Collections.Generic; namespace Luban.Job.Cfg.DataVisitors { - class ResourceExportor : IDataActionVisitor> + class ResourceExportor : IDataActionVisitor> { + public const string ResTagName = "res"; + public static ResourceExportor Ins { get; } = new ResourceExportor(); - public void Accept(DBool type, DefField x, List y) + public void Accept(DBool type, TType x, List y) { - throw new NotImplementedException(); + } - public void Accept(DByte type, DefField x, List y) + public void Accept(DByte type, TType x, List y) { - throw new NotImplementedException(); + } - public void Accept(DShort type, DefField x, List y) + public void Accept(DShort type, TType x, List y) { - throw new NotImplementedException(); + } - public void Accept(DFshort type, DefField x, List y) + public void Accept(DFshort type, TType x, List y) { - throw new NotImplementedException(); + } - public void Accept(DInt type, DefField x, List y) + public void Accept(DInt type, TType x, List y) { - throw new NotImplementedException(); + } - public void Accept(DFint type, DefField x, List y) + public void Accept(DFint type, TType x, List y) { - throw new NotImplementedException(); + } - public void Accept(DLong type, DefField x, List y) + public void Accept(DLong type, TType x, List y) { - throw new NotImplementedException(); + } - public void Accept(DFlong type, DefField x, List y) + public void Accept(DFlong type, TType x, List y) { - throw new NotImplementedException(); + } - public void Accept(DFloat type, DefField x, List y) + public void Accept(DFloat type, TType x, List y) { - throw new NotImplementedException(); + } - public void Accept(DDouble type, DefField x, List y) + public void Accept(DDouble type, TType x, List y) { - throw new NotImplementedException(); + } - public void Accept(DEnum type, DefField x, List y) + public void Accept(DEnum type, TType x, List y) { - throw new NotImplementedException(); + } - public void Accept(DString type, DefField x, List y) + public void Accept(DString type, TType x, List y) { - //if (!string.IsNullOrEmpty(type.Value)) - //{ - // y.Add(new ResourceInfo() { Resource = type.Value, Tag = x.ResourceTag }); - //} - throw new NotSupportedException(); + if (!string.IsNullOrEmpty(type.Value) && x.HasTag(ResTagName)) + { + y.Add(new ResourceInfo() { Resource = type.Value, Tag = x.GetTag(ResTagName) }); + } } - public void Accept(DBytes type, DefField x, List y) + public void Accept(DText type, TType x, List y) { - throw new NotImplementedException(); + } - public void Accept(DText type, DefField x, List y) + public void Accept(DBytes type, TType x, List y) { - throw new NotImplementedException(); + } - public void Accept(DBean type, DefField _, List y) + public void Accept(DDateTime type, TType x, List y) + { + + } + + public void Accept(DVector2 type, TType x, List y) + { + + } + + public void Accept(DVector3 type, TType x, List y) + { + + } + + public void Accept(DVector4 type, TType x, List y) + { + + } + + public void Accept(DBean type, TType x, List y) { var def = type.ImplType; if (def == null) { return; } - //int index = 0; - //foreach (DType fieldData in type.Fields) - //{ - // var fieldDef = (DefField)def.HierarchyFields[index++]; - // if (fieldDef.IsResource) - // { - // fieldData.Apply(this, fieldDef, y); - // } - //} - throw new NotSupportedException(); + int index = 0; + foreach (DType fieldData in type.Fields) + { + if (fieldData == null) + { + continue; + } + var fieldDef = ((DefField)def.HierarchyFields[index++]).CType; + fieldData.Apply(this, fieldDef, y); + } } - private void Accept(DefField def, List datas, TType elementType, List ress) + private void Accept(List datas, TType elementType, List ress) { - //if (def.IsResource || (elementType is TBean)) - //{ - // foreach (var e in datas) - // { - // e.Apply(this, def, ress); - // } - //} - throw new NotSupportedException(); + foreach (var e in datas) + { + if (e != null) + { + e.Apply(this, elementType, ress); + } + } } - public void Accept(DArray type, DefField x, List y) + public void Accept(DArray type, TType x, List y) { - Accept(x, type.Datas, type.Type.ElementType, y); + Accept(type.Datas, type.Type.ElementType, y); } - public void Accept(DList type, DefField x, List y) + public void Accept(DList type, TType x, List y) { - Accept(x, type.Datas, type.Type.ElementType, y); + Accept(type.Datas, type.Type.ElementType, y); } - public void Accept(DSet type, DefField x, List y) + public void Accept(DSet type, TType x, List y) { - Accept(x, type.Datas, type.Type.ElementType, y); + Accept(type.Datas, type.Type.ElementType, y); } - public void Accept(DMap type, DefField x, List y) + public void Accept(DMap type, TType x, List y) { - //if (x.IsResource || (type.Type.ValueType is TBean)) - //{ - // foreach (var e in type.Datas.Values) - // { - // e.Apply(this, x, y); - // } - //} - throw new NotSupportedException(); - } - - public void Accept(DVector2 type, DefField x, List y) - { - throw new NotImplementedException(); - } - - public void Accept(DVector3 type, DefField x, List y) - { - throw new NotImplementedException(); - } - - public void Accept(DVector4 type, DefField x, List y) - { - throw new NotImplementedException(); - } - - public void Accept(DDateTime type, DefField x, List y) - { - throw new NotImplementedException(); + TMap mtype = (TMap)x; + foreach (var (k, v) in type.Datas) + { + k.Apply(this, mtype.KeyType, y); + v.Apply(this, mtype.ValueType, y); + } } } } diff --git a/src/Luban.Job.Cfg/Source/Utils/DataExporterUtil.cs b/src/Luban.Job.Cfg/Source/Utils/DataExporterUtil.cs index dda06bd..1e0ce38 100644 --- a/src/Luban.Job.Cfg/Source/Utils/DataExporterUtil.cs +++ b/src/Luban.Job.Cfg/Source/Utils/DataExporterUtil.cs @@ -8,6 +8,7 @@ using Luban.Job.Cfg.Defs; using Luban.Job.Cfg.l10n; using Luban.Job.Cfg.RawDefs; using Luban.Job.Common.Tpl; +using Luban.Job.Common.Types; using Luban.Job.Common.Utils; using MessagePack; using Scriban; @@ -167,7 +168,7 @@ namespace Luban.Job.Cfg.Utils var resList = new List(); foreach (Record res in records) { - ResourceExportor.Ins.Accept(res.Data, null, resList); + ResourceExportor.Ins.Accept(res.Data, TBean.Create(false, res.Data.Type, null), resList); } return resList; }