コード例 #1
0
ファイル: Program.cs プロジェクト: boranblok/PokemonRomTools
        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));
        }
コード例 #2
0
 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();
 }
コード例 #3
0
        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();
        }