diff --git a/src/LubanAssistant/AssistantTab.Designer.cs b/src/LubanAssistant/AssistantTab.Designer.cs index 9cfc89e..65b8b74 100644 --- a/src/LubanAssistant/AssistantTab.Designer.cs +++ b/src/LubanAssistant/AssistantTab.Designer.cs @@ -37,14 +37,14 @@ namespace LubanAssistant { this.tab1 = this.Factory.CreateRibbonTab(); this.group3 = this.Factory.CreateRibbonGroup(); - this.group1 = this.Factory.CreateRibbonGroup(); - this.group2 = this.Factory.CreateRibbonGroup(); - this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.SetRootFile = this.Factory.CreateRibbonButton(); this.load = this.Factory.CreateRibbonButton(); + this.group1 = this.Factory.CreateRibbonGroup(); + this.reloadData = this.Factory.CreateRibbonButton(); + this.group2 = this.Factory.CreateRibbonGroup(); this.saveAll = this.Factory.CreateRibbonButton(); this.saveSelected = this.Factory.CreateRibbonButton(); - this.reloadData = this.Factory.CreateRibbonButton(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.tab1.SuspendLayout(); this.group3.SuspendLayout(); this.group1.SuspendLayout(); @@ -63,24 +63,9 @@ namespace LubanAssistant // group3 // this.group3.Items.Add(this.SetRootFile); + this.group3.Items.Add(this.load); this.group3.Name = "group3"; // - // group1 - // - this.group1.Items.Add(this.load); - this.group1.Items.Add(this.reloadData); - this.group1.Name = "group1"; - // - // group2 - // - this.group2.Items.Add(this.saveAll); - this.group2.Items.Add(this.saveSelected); - this.group2.Name = "group2"; - // - // openFileDialog1 - // - this.openFileDialog1.FileName = "openFileDialog1"; - // // SetRootFile // this.SetRootFile.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; @@ -92,10 +77,30 @@ namespace LubanAssistant // load // this.load.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; - this.load.Label = "加载数据表"; + this.load.Label = "设置配置根目录"; this.load.Name = "load"; + this.load.ScreenTip = "--input_data_dir 中指定的根目录,而不是当前配置表的input属性指定目录"; this.load.ShowImage = true; - this.load.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnLoadClick); + this.load.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnChooseDataDirClick); + // + // group1 + // + this.group1.Items.Add(this.reloadData); + this.group1.Name = "group1"; + // + // reloadData + // + this.reloadData.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; + this.reloadData.Label = "加载数据"; + this.reloadData.Name = "reloadData"; + this.reloadData.ShowImage = true; + this.reloadData.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnLoadDataClick); + // + // group2 + // + this.group2.Items.Add(this.saveAll); + this.group2.Items.Add(this.saveSelected); + this.group2.Name = "group2"; // // saveAll // @@ -113,12 +118,9 @@ namespace LubanAssistant this.saveSelected.ShowImage = true; this.saveSelected.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.BtnSaveSelectedClick); // - // reloadData + // openFileDialog1 // - this.reloadData.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge; - this.reloadData.Label = "重新加载"; - this.reloadData.Name = "reloadData"; - this.reloadData.ShowImage = true; + this.openFileDialog1.FileName = "openFileDialog1"; // // AssistantTab // diff --git a/src/LubanAssistant/AssistantTab.cs b/src/LubanAssistant/AssistantTab.cs index 687cdf5..996bbd4 100644 --- a/src/LubanAssistant/AssistantTab.cs +++ b/src/LubanAssistant/AssistantTab.cs @@ -26,7 +26,15 @@ namespace LubanAssistant } } - public string DataDir { get; set; } + public string InputDataDir + { + get => Properties.Settings.Default.dataDir; + set + { + Properties.Settings.Default.dataDir = value; + Properties.Settings.Default.Save(); + } + } private void AssistantTab_Load(object sender, RibbonUIEventArgs e) { @@ -85,20 +93,11 @@ namespace LubanAssistant } } - private void BtnLoadClick(object sender, RibbonControlEventArgs e) + private void BtnChooseDataDirClick(object sender, RibbonControlEventArgs e) { - if (!HasSetRootDefineFile()) - { - MessageBox.Show("请先设置Root定义文件"); - return; - } if (TryChooseInputDataDir(out var dataDir)) { - DataDir = dataDir; - if (PromptIgnoreNotSaveData()) - { - LoadDataToCurrentDoc(); - } + InputDataDir = dataDir; } } @@ -108,34 +107,26 @@ namespace LubanAssistant return true; } - private async Task LoadDataToCurrentDoc() + private void LoadDataToCurrentDoc() { - MessageBox.Show($"从目录:{DataDir} 加载数据"); if (!TryGetTableName(out var tableName)) { MessageBox.Show($"meta行未指定table名"); return; } - string inputDataDir = DataDir; + Task.Run(async () => + { + try + { + await LoadUtil.LoadDataToCurrentDoc(RootDefineFile, InputDataDir, tableName); + } + catch (Exception e) + { + MessageBox.Show(e.StackTrace, e.Message); + } + }); - IAgent agent = new LocalAgent(); - var loader = new CfgDefLoader(agent); - await loader.LoadAsync(RootDefineFile); - - var rawDefines = loader.BuildDefines(); - - TimeZoneInfo timeZoneInfo = null; - - var excludeTags = new List(); - var ass = new DefAssembly("", timeZoneInfo, excludeTags, agent); - - ass.Load(rawDefines); - - DefAssemblyBase.LocalAssebmly = ass; - - var table = ass.GetCfgTable(tableName); - await DataLoaderUtil.LoadTableAsync(agent, table, inputDataDir, "", ""); } private bool PromptIgnoreNotSaveData() @@ -155,9 +146,14 @@ namespace LubanAssistant return true; } - private void BtnReloadClick(object sender, RibbonControlEventArgs e) + private void BtnLoadDataClick(object sender, RibbonControlEventArgs e) { - if (!Directory.Exists(DataDir)) + if (!HasSetRootDefineFile()) + { + MessageBox.Show("未设置root定义文件"); + return; + } + if (!Directory.Exists(InputDataDir)) { MessageBox.Show("未设置加载目录"); return; diff --git a/src/LubanAssistant/LoadUtil.cs b/src/LubanAssistant/LoadUtil.cs new file mode 100644 index 0000000..fac2efe --- /dev/null +++ b/src/LubanAssistant/LoadUtil.cs @@ -0,0 +1,46 @@ +using Bright.Common; +using Luban.Job.Cfg.Defs; +using Luban.Job.Cfg.Utils; +using Luban.Job.Common.Defs; +using Luban.Server.Common; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace LubanAssistant +{ + static class LoadUtil + { + public static async Task LoadDataToCurrentDoc(string rootDefineFile, string inputDataDir, string tableName) + { + IAgent agent = new LocalAgent(); + var loader = new CfgDefLoader(agent); + await loader.LoadAsync(rootDefineFile); + + var rawDefines = loader.BuildDefines(); + + TimeZoneInfo timeZoneInfo = null; + + var excludeTags = new List(); + var ass = new DefAssembly("", timeZoneInfo, excludeTags, agent); + + ass.Load(rawDefines); + + DefAssemblyBase.LocalAssebmly = ass; + + var table = ass.GetCfgTable(tableName); + + if (table == null) + { + throw new Exception($"table:{tableName}不存在"); + } + await DataLoaderUtil.LoadTableAsync(agent, table, inputDataDir, "", ""); + + var datas = ass.GetTableAllDataList(table); + MessageBox.Show($"table:{table.FullName} input:{StringUtil.CollectionToString(table.InputFiles)} record num:{datas.Count}"); + } + } +} diff --git a/src/LubanAssistant/LubanAssistant.csproj b/src/LubanAssistant/LubanAssistant.csproj index f1faa9e..3ec3d1c 100644 --- a/src/LubanAssistant/LubanAssistant.csproj +++ b/src/LubanAssistant/LubanAssistant.csproj @@ -538,6 +538,7 @@ AssistantTab.cs + Code diff --git a/src/LubanAssistant/Source/Defs/DefAssembly.cs b/src/LubanAssistant/Source/Defs/DefAssembly.cs index 3f39f68..f7d23b3 100644 --- a/src/LubanAssistant/Source/Defs/DefAssembly.cs +++ b/src/LubanAssistant/Source/Defs/DefAssembly.cs @@ -34,8 +34,6 @@ namespace Luban.Job.Cfg.Defs public new static DefAssembly LocalAssebmly { get => (DefAssembly)DefAssemblyBase.LocalAssebmly; set => DefAssemblyBase.LocalAssebmly = value; } - public Service CfgTargetService { get; private set; } - private readonly string _patchName; private readonly List _excludeTags; @@ -53,11 +51,7 @@ namespace Luban.Job.Cfg.Defs public bool NeedExport(List groups) { - if (groups.Count == 0) - { - return true; - } - return groups.Any(g => CfgTargetService.Groups.Contains(g)); + return true; } private readonly List _patches = new List(); @@ -124,44 +118,14 @@ namespace Luban.Job.Cfg.Defs return Types.Values.Where(t => t is DefTable ct && ct.NeedExport).Select(t => (DefTable)t).ToList(); } - public List GetExportTypes() - { - var refTypes = new Dictionary(); - var targetService = CfgTargetService; - foreach (var refType in targetService.Refs) - { - if (!this.Types.ContainsKey(refType)) - { - throw new Exception($"service:'{targetService.Name}' ref:'{refType}' 类型不存在"); - } - if (!refTypes.TryAdd(refType, this.Types[refType])) - { - throw new Exception($"service:'{targetService.Name}' ref:'{refType}' 重复引用"); - } - } - foreach (var e in this.Types) - { - if (!refTypes.ContainsKey(e.Key) && (e.Value is DefEnum)) - { - refTypes.Add(e.Key, e.Value); - } - } - - foreach (var table in GetExportTables()) - { - refTypes[table.FullName] = table; - table.ValueTType.Apply(RefTypeVisitor.Ins, refTypes); - } - - return refTypes.Values.ToList(); - } - public void Load(Defines defines) { SupportDatetimeType = true; TopModule = defines.TopModule; + this._patches.AddRange(defines.Patches); + foreach (var e in defines.Enums) { AddType(new DefEnum(e));