예제 #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_transform_Click(object sender, EventArgs e)
        {
            var patch = OpenFile.OpenDialog("请选择需要翻译的语言包", "需要翻译的包(*.tbl)|*.tbl", "是否翻译此文件");

            if (string.IsNullOrWhiteSpace(patch))
            {
                return;
            }

            var form = this;


            void UpdateStatus(string text)
            {
                statusStrip1.Items[1].Text = text;
            }

            void ShowMessage(string message)
            {
                MessageBoxEx.Show(message, "提示");
            }

            UpdateStatus("正在解析tbl文件");

            var task = new Task(() =>
            {
                form.Invoke((Action <string>)UpdateStatus, "执行汉化中");

                var tblTransform = new TblTransform(patch);

                tblTransform.TransformEventHandler += OnTransformEventHandler;

                var bytes = tblTransform.Transform(ModelManager.Instance.Items.ToArray());

                var _path = $@"{Environment.CurrentDirectory }\汉化";

                if (!Directory.Exists(_path))
                {
                    Directory.CreateDirectory(_path);
                }

                var path = $@"{_path}\data.bin.lan.kor_{DateTime.Now:yyyyMMddss}.tbl";

                using (var stream = new FileStream(path, FileMode.CreateNew))
                {
                    stream.Write(bytes, 0, bytes.Length);
                }

                form.Invoke((Action <string>)ShowMessage, "汉化完成");
            });

            task.Start();
        }
예제 #3
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();
        }