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); } }
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")); }
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); }
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); } } } }
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"); } }