diff --git a/src/Luban.Job.Cfg/Source/GenArgs.cs b/src/Luban.Job.Cfg/Source/GenArgs.cs index 9abe87f..26e878b 100644 --- a/src/Luban.Job.Cfg/Source/GenArgs.cs +++ b/src/Luban.Job.Cfg/Source/GenArgs.cs @@ -14,6 +14,9 @@ namespace Luban.Job.Cfg [Option("output_data_dir", Required = true, HelpText = "output data directory")] public string OutputDataDir { get; set; } + [Option("input_convert_data_dir", Required = false, HelpText = "override input data dir with convert data dir")] + public string InputConvertDataDir { get; set; } + [Option("output_data_resource_list_file", Required = false, HelpText = "output resource list file")] public string OutputDataResourceListFile { get; set; } diff --git a/src/Luban.Job.Cfg/Source/JobController.cs b/src/Luban.Job.Cfg/Source/JobController.cs index 50a9e9b..1e1ec37 100644 --- a/src/Luban.Job.Cfg/Source/JobController.cs +++ b/src/Luban.Job.Cfg/Source/JobController.cs @@ -173,7 +173,7 @@ namespace Luban.Job.Cfg hasLoadCfgData = true; var timer = new ProfileTimer(); timer.StartPhase("load config data"); - await DataLoaderUtil.LoadCfgDataAsync(agent, ass, args.InputDataDir, args.PatchName, args.PatchInputDataDir); + await DataLoaderUtil.LoadCfgDataAsync(agent, ass, args.InputDataDir, args.PatchName, args.PatchInputDataDir, args.InputConvertDataDir); timer.EndPhaseAndLog(); if (needL10NTextConvert) diff --git a/src/Luban.Job.Cfg/Source/Utils/DataLoaderUtil.cs b/src/Luban.Job.Cfg/Source/Utils/DataLoaderUtil.cs index 6df56be..4820579 100644 --- a/src/Luban.Job.Cfg/Source/Utils/DataLoaderUtil.cs +++ b/src/Luban.Job.Cfg/Source/Utils/DataLoaderUtil.cs @@ -95,10 +95,26 @@ namespace Luban.Job.Cfg.Utils } } - public static async Task LoadTableAsync(IAgent agent, DefTable table, string dataDir, string patchName, string patchDataDir) + public static async Task LoadTableAsync(IAgent agent, DefTable table, string dataDir, string patchName, string patchDataDir, string inputConvertDataDir) { var mainLoadTasks = new List>>(); - var mainGenerateTask = GenerateLoadRecordFromFileTasksAsync(agent, table, dataDir, table.InputFiles, mainLoadTasks); + + // 如果指定了 inputConvertDataDir, 则覆盖dataDir为 inputConvertDataDir + // 同时 修改所有表的input为 table.FullName + string finalDataDir; + List finalInputFiles; + if (string.IsNullOrWhiteSpace(inputConvertDataDir)) + { + finalDataDir = dataDir; + finalInputFiles = table.InputFiles; + } + else + { + finalDataDir = inputConvertDataDir; + finalInputFiles = new List() { table.FullName }; + } + + var mainGenerateTask = GenerateLoadRecordFromFileTasksAsync(agent, table, finalDataDir, finalInputFiles, mainLoadTasks); var patchLoadTasks = new List>>(); @@ -138,7 +154,7 @@ namespace Luban.Job.Cfg.Utils s_logger.Trace("table:{name} record num:{num}", table.FullName, mainRecords.Count); } - public static async Task LoadCfgDataAsync(IAgent agent, DefAssembly ass, string dataDir, string patchName, string patchDataDir) + public static async Task LoadCfgDataAsync(IAgent agent, DefAssembly ass, string dataDir, string patchName, string patchDataDir, string inputConvertDataDir) { var ctx = agent; List exportTables = ass.Types.Values.Where(t => t is DefTable ct && ct.NeedExport).Select(t => (DefTable)t).ToList(); @@ -152,7 +168,7 @@ namespace Luban.Job.Cfg.Utils genDataTasks.Add(Task.Run(async () => { long beginTime = TimeUtil.NowMillis; - await LoadTableAsync(agent, table, dataDir, patchName, patchDataDir); + await LoadTableAsync(agent, table, dataDir, patchName, patchDataDir, inputConvertDataDir); long endTime = TimeUtil.NowMillis; if (endTime - beginTime > 100) {