From ad965cf8e41cb389e29b85a55c1ef6a09e970e70 Mon Sep 17 00:00:00 2001 From: walon Date: Thu, 8 Apr 2021 10:56:58 +0800 Subject: [PATCH] =?UTF-8?q?job=20cfg=20=E6=96=B0=E5=A2=9Egen=5Ftype?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=20data=5Fjson=5Fmonolithic:=E5=B0=86?= =?UTF-8?q?=E6=89=80=E6=9C=89json=E6=96=87=E4=BB=B6=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=88=B0=E4=B8=80=E4=B8=AA=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Luban.Job.Cfg/Source/JobController.cs | 37 ++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/Luban.Job.Cfg/Source/JobController.cs b/src/Luban.Job.Cfg/Source/JobController.cs index 36f1348..ec078ad 100644 --- a/src/Luban.Job.Cfg/Source/JobController.cs +++ b/src/Luban.Job.Cfg/Source/JobController.cs @@ -49,7 +49,7 @@ namespace Luban.Job.Cfg [Option("output_data_dir", Required = true, HelpText = "output data directory")] public string OutputDataDir { get; set; } - [Option("gen_types", Required = true, HelpText = "code_cs_bin,code_cs_json,code_lua_bin,data_bin,data_lua,data_json can be multi")] + [Option("gen_types", Required = true, HelpText = "code_cs_bin,code_cs_json,code_lua_bin,data_bin,data_lua,data_json,data_json_monolithic . can be multi")] public string GenType { get; set; } [Option('s', "service", Required = true, HelpText = "service")] @@ -824,6 +824,41 @@ class Vector4: } break; } + case "data_json_monolithic": + { + await CheckLoadCfgDataAsync(); + List> allJsonTask = new List>(); + foreach (var c in exportTables) + { + allJsonTask.Add(Task.Run(() => + { + return ToOutputData(c, ass.GetTableDataList(c), "data_json"); + })); + } + await Task.WhenAll(allJsonTask); + + int estimatedCapacity = allJsonTask.Sum(t => t.Result.Length + 100); + var sb = new MemoryStream(estimatedCapacity); + sb.Write(System.Text.Encoding.UTF8.GetBytes("{\n")); + for (int i = 0; i < exportTables.Count; i++) + { + if (i != 0) + { + sb.Write(System.Text.Encoding.UTF8.GetBytes((",\n"))); + } + sb.Write(System.Text.Encoding.UTF8.GetBytes("\"" + exportTables[i].Name + "\":")); + sb.Write(allJsonTask[i].Result); + } + sb.Write(System.Text.Encoding.UTF8.GetBytes("\n}")); + + var content = sb.ToArray(); + s_logger.Debug("estimated size:{0} actual size:{1}", estimatedCapacity, content.Length); + var md5 = FileUtil.CalcMD5(content); + var outputFile = "tables.json"; + CacheManager.Ins.AddCache(outputFile, md5, content); + genDataFiles.Add(new FileInfo() { FilePath = outputFile, MD5 = md5 }); + break; + } case "data_lua": { await CheckLoadCfgDataAsync();