/// <summary> /// 导入翻译文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Sbtn_tai_Click(object sender, EventArgs e) { var patch = OpenFile.OpenDialog("请选择翻译后的语言包", "翻译后的包(*.tbl)|*.tbl", "是否将文件导入到字库中"); if (string.IsNullOrWhiteSpace(patch)) { return; } var form = this; progress = new FormProgress(); progress.SetFormText("正在解析tbl文件"); var task = new Task(() => { var tblParse = new TblParse(patch); var models = tblParse.Parser(); form.Invoke((Action <string, int>)SetFormInfo, "导入汉化的进度", models.Count); var items = ModelManager.Instance.Items; //遍历已翻译过的 models = models.Where(x => x.Value.Length > 0).ToList(); foreach (var x in models) { //已form主线程的方式执行代码 form.Invoke((Action)SetFormProgress); var item = items.FirstOrDefault(_ => _.Key == x.Key); if (item == null) { continue; } var hanLen = EncodingHelp.GetStringLength(item.Value); var tranLen = EncodingHelp.GetStringLength(x.Value); if (tranLen > hanLen) { continue; } item.Transform = x.Value; } //保存字库 ModelManager.Instance.Save(); uiHelper.InitData(sdgv_items, GetPage); }); task.Start(); progress.ShowDialog(form); }
/// <summary> /// 导入韩服文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Sbtn_improt_han_Click(object sender, EventArgs e) { var patch = OpenFile.OpenDialog("请选择韩文语言包", "原始韩文包(*.tbl)|*.tbl", "是否将文件导入到字库中"); if (string.IsNullOrWhiteSpace(patch)) { return; } var form = this; progress = new FormProgress(); progress.SetFormText("正在解析tbl文件"); var task = new Task(() => { var tblParse = new TblParse(patch); var models = tblParse.Parser(); form.Invoke((Action <string, int>)SetFormInfo, "导入韩文进度", models.Count); var items = ModelManager.Instance.Items; //过滤字库 models.ForEach(x => { if (!items.Exists(item => item.Key == x.Key)) { items.Add(x); } form.Invoke((Action)SetFormProgress); }); //保存字库 ModelManager.Instance.Save(); uiHelper.InitData(sdgv_items, GetPage); }); task.Start(); progress.ShowDialog(form); task.Wait(); }