luban/src/Luban.Job.Cfg/Source/Generate/DataScatterRender.cs

44 lines
1.6 KiB
C#

using Luban.Common.Protos;
using Luban.Job.Cfg.Cache;
using Luban.Job.Cfg.Utils;
using Luban.Job.Common.Generate;
using Luban.Job.Common.Utils;
using System.Threading.Tasks;
namespace Luban.Job.Cfg.Generate
{
[Render("data_bin")]
[Render("data_json")]
[Render("data_json2")]
[Render("data_bson")]
[Render("data_lua")]
[Render("data_xml")]
[Render("data_yaml")]
[Render("data_protobuf_bin")]
[Render("data_protobuf_json")]
[Render("data_msgpack")]
[Render("data_flatbuffers_json")]
class DataScatterRender : DataRenderBase
{
public override void Render(GenContext ctx)
{
string genType = ctx.GenType;
foreach (var table in ctx.ExportTables)
{
ctx.Tasks.Add(Task.Run(() =>
{
var file = RenderFileUtil.GetOutputFileName(genType, table.OutputDataFile, ctx.GenArgs.OutputDataFileExtension);
var records = ctx.Assembly.GetTableExportDataList(table);
if (!FileRecordCacheManager.Ins.TryGetRecordOutputData(table, records, genType, out string md5))
{
var content = DataExporterUtil.ToOutputData(table, records, genType);
md5 = CacheFileUtil.GenStringOrBytesMd5AndAddCache(file, content);
FileRecordCacheManager.Ins.AddCachedRecordOutputData(table, records, genType, md5);
}
ctx.GenDataFilesInOutputDataDir.Add(new FileInfo() { FilePath = file, MD5 = md5 });
}));
}
}
}
}