Example #1
0
        public static void ReplaceText(string sourcePath, string location)
        {
            var workbook = Workbook.Load(sourcePath);
            var sheetMap = workbook.Worksheets.ToDictionary(
                x => x.Name,
                x => x.Rows.Skip(1).OrderBy(y => (double)(y.Cells[0].Value)).Select(y => y.Cells[3].GetText()?.Replace("\r\n", "\n")).ToList());


            var files = Directory.GetFiles(location, "*.olang");

            foreach (var file in files)
            {
                var olang = OlangFile.Read(file);
                var key   = Path.GetFileNameWithoutExtension(file);


                var korean = sheetMap[key];

                for (var i = 0; i < olang.TextList.Count; i++)
                {
                    olang.TextList[i].Text = korean[i].ReplaceWideCharacters();
                }

                olang.Write(file);
            }
        }
Example #2
0
        private static void SaveExcel(string location, Workbook workbook)
        {
            foreach (var item in Directory.GetFiles(@"olang\xml", "*.olang.xml"))
            {
                var key = Path.GetFileNameWithoutExtension(item);
                key = key.Remove(key.IndexOf('.'));

                var olang = OlangFile.Read(item);

                var sheet = workbook.Worksheets.Add(key);

                sheet.Columns[1].SetWidth(600, WorksheetColumnWidthUnit.Pixel);
                sheet.Columns[1].CellFormat.WrapText = ExcelDefaultableBoolean.True;

                sheet.Columns[2].SetWidth(600, WorksheetColumnWidthUnit.Pixel);
                sheet.Columns[2].CellFormat.WrapText = ExcelDefaultableBoolean.True;

                var rowIndex = 1;
                foreach (var entitiy in olang.TextMap.OrderBy(x => x.Key))
                {
                    var row = sheet.Rows[rowIndex++];

                    row.Cells[0].Value = entitiy.Key;
                    row.Cells[1].Value = entitiy.Value;
                }
            }

            workbook.Save(Path.Combine(location, "olang_.xlsx"));
        }
Example #3
0
        private static void SaveOlangToExcel(string location, string output)
        {
            var workbook = new Workbook(WorkbookFormat.Excel2007);

            foreach (var item in Directory.GetFiles(location, "*.olang").Select(x => new FileInfo(x)).OrderBy(x => x.Length).Select(x => x.FullName))
            {
                var key = Path.GetFileNameWithoutExtension(item);
                //key = key.Remove(key.IndexOf('.'));

                var olang = OlangFile.Read(item);

                var sheet = workbook.Worksheets.Add(key);

                sheet.Rows[0].Cells[0].Value = "Index";
                sheet.Rows[0].Cells[1].Value = "Ref";
                sheet.Rows[0].Cells[2].Value = "Japanese";
                sheet.Rows[0].Cells[3].Value = "Korean";

                sheet.Columns[2].SetWidth(600, WorksheetColumnWidthUnit.Pixel);
                sheet.Columns[2].CellFormat.WrapText = ExcelDefaultableBoolean.True;

                sheet.Columns[3].SetWidth(600, WorksheetColumnWidthUnit.Pixel);
                sheet.Columns[3].CellFormat.WrapText = ExcelDefaultableBoolean.True;


                var map = new Dictionary <int, int>();
                for (int i = 0; i < olang.References.Count; i++)
                {
                    var index = olang.References[i].OffsetIndex;
                    if (!map.ContainsKey(index))
                    {
                        map[index] = i;
                    }
                }

                for (int i = 0; i < olang.TextList.Count; i++)
                {
                    var row = sheet.Rows[i + 1];

                    row.Cells[0].Value = i + 1;
                    int ri;
                    if (map.TryGetValue(i, out ri))
                    {
                        row.Cells[1].Value = ri;
                    }
                    row.Cells[2].Value = olang.TextList[i].Text;
                }

                //Sort(olang.TextList.Count, sheet);
            }



            workbook.Save(output);
        }
Example #4
0
        public static void ReplaceText(string input)
        {
            var workbook = Workbook.Load(input);

            //ReplaceName(workbook);

            var textMap = workbook.Worksheets.ToDictionary(
                x => x.Name,
                x => x.Rows.Skip(1).OrderBy(y => (double)(y.Cells[0].Value)).Select(y => y.Cells[3].GetText()).ToList());

            var slots = Directory.GetFiles("SLOT", "*.olang").Select(x => Path.GetFileName(x.Remove(22) + ".slot.xml")).Distinct();

            foreach (var slot in slots)
            {
                var olangs = SerializationHelper <SlotSubItem[]> .Read(Path.Combine("SLOT", slot)).Where(x => x.Extension == EntityExtensions.olang).ToList();

                var prefix = slot.RemoveExtension(2);
                foreach (var olangItem in olangs)
                {
                    var olangFilePath = string.Format(@"SLOT\{0}_{1:X6}.olang", prefix, olangItem.Key & 0xFFFFFF);

                    var olang = OlangFile.Read(olangFilePath);

                    var key = Path.GetFileNameWithoutExtension(olangFilePath);

                    List <string> texts;

                    if (textMap.TryGetValue(key, out texts))
                    {
                        if (texts.TrueForAll(x => x == null))
                        {
                            continue;
                        }
                        Debug.Assert(olang.TextList.Count == texts.Count);

                        for (int i = 0; i < texts.Count; i++)
                        {
                            if (!string.IsNullOrEmpty(texts[i]))
                            {
                                olang.TextList[i].Text = texts[i].ReplaceWideCharacters();
                            }
                        }

                        olang.Write(olangFilePath);
                    }
                }
            }
        }
Example #5
0
        private static void UnpackOlang()
        {
            var location = @"D:\Projects\Sandbox\PeaceWalkerTools\PeaceWalkerTools\bin\Debug\Extracted";

            var workbook = new Workbook(WorkbookFormat.Excel2007);

            var offsets = new List <int>();
            var md5     = MD5.Create();

            var all = Directory.GetFiles(location, "*.olang", SearchOption.AllDirectories);

            var group = all.GroupBy(x => Path.GetFileName(x)).OrderBy(x => x.Key).ToDictionary(x => x.Key, x => x.ToList());


            foreach (var item in group)
            {
                //var hashes = item.Value.Select(x =>
                //{
                //    using (var fs = File.OpenRead(x))
                //    {
                //        var hash = md5.ComputeHash(fs);

                //        return new { FileName = x, Hash = BitConverter.ToUInt64(hash, 0) ^ BitConverter.ToUInt64(hash, 8) };
                //    }
                //}).GroupBy(x => x.Hash).ToDictionary(x => x.Key, x => x.Select(y => y.FileName).ToList());

                //if (hashes.Count != 1)
                //{
                //    Debugger.Break();
                //}

                var path     = item.Value.First();
                var olang    = OlangFile.Read(path);
                var fileName = Path.GetFileName(path);

                SerializationHelper.Save(olang, @"olang\xml\" + Path.Combine(fileName) + ".xml");
            }
        }