示例#1
0
        /// <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);
        }
示例#2
0
        /// <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();
        }