private static List <PointerText> LoadTranslationFileLines(String translationFileName) { var translationSourceFile = new FileInfo(translationFileName); if (!translationSourceFile.Exists) { Console.WriteLine("Translation source file {0} does not exist", translationFileName); return(null); } return(PointerText.ReadPointersFromFile(translationSourceFile)); }
private void LoadtranslationFile(FileInfo translationSourceFile) { TranslationLines.Clear(); Filter.Groups.Clear(); Filter.SelectedGroups.Clear(); foreach (var line in PointerText.ReadPointersFromFile(translationSourceFile)) { if (!Filter.Groups.Contains(line.Group)) { Filter.Groups.Add(line.Group); } TranslationLines.Add(new TranslationItemViewModel(line, _lineLengthService, this)); } autoSaveTimer.Start(); StatusMessage = String.Format("Loaded {0}", translationSourceFile.Name); CurrentLineMessage = String.Format("{0} Lines", TranslationLinesView.Cast <TranslationItemViewModel>().Count()); OnNewFileLoaded(); }
static void Main(string[] args) { if (args.Length < 3) { Console.WriteLine("Pass at elast one rom file, output file, and existing translation file"); } var rom = new RomDataWrapper(new FileInfo(args[0])); var tmpRomData = new Byte[rom.RomContents.Length - (skipBlockEnd - skipBlockStart)]; Array.Copy(rom.RomContents, tmpRomData, skipBlockStart); Array.Copy(rom.RomContents, skipBlockEnd, tmpRomData, skipBlockStart, rom.RomContents.Length - skipBlockEnd); var romWithHole = new RomDataWrapper(tmpRomData); FileInfo outputFile = new FileInfo(args[1]); var pointers = new List <PointerText>(); for (int i = 2; i < args.Length; i++) { pointers.AddRange(PointerText.ReadPointersFromFile(new FileInfo(args[i]))); } pointers = pointers.OrderBy(p => p.Address).ToList(); foreach (var pointer in pointers) { if (pointer.Address > skipBlockEnd) { pointer.Address -= (skipBlockEnd - skipBlockStart); } } var blocks = new List <ValueTuple <Int32, Int32> >(); var block = (pointers[0].Address, pointers[0].Address + pointers[0].AvailableLength); foreach (var pointer in pointers.Skip(1)) { if (block.Item2 + 1 == pointer.Address) { block = (block.Item1, pointer.Address + pointer.AvailableLength); } else { blocks.Add(block); block = (pointer.Address, pointer.Address + pointer.AvailableLength); } } ProcessBlocks(blocks, romWithHole); for (int i = 0; i < newTranslationLines.Count; i++) { if (newTranslationLines[i] > skipBlockStart) { newTranslationLines[i] += (skipBlockEnd - skipBlockStart); } } var linesToTranslate = LoadNewTranslationLines(rom); Console.Write("\rReading progress: 100% "); Console.WriteLine(); Console.WriteLine("Writing missed text entries to file."); PointerText.WritePointersToFile(outputFile, linesToTranslate.OrderBy(l => l.Address)); Console.WriteLine("Done, press any key to continue..."); Console.ReadLine(); }