示例#1
0
        static void Dump(string FileName, EndianBinary.Endian Endian)
        {
            string        OutFile = Path.GetFileNameWithoutExtension(FileName) + ".txt";
            StringBuilder Output  = new StringBuilder();

            FileStream         Input  = new FileStream(FileName, FileMode.Open);
            EndianBinaryReader Reader = new EndianBinaryReader(Input, Endian);

            Section Lang = ParseSection(Reader);

            if (Lang.Signature != "LANG")
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Invalid file!");
                Console.ResetColor();
            }

            Input.Seek(ParsePack(Reader, Lang)[0].Offset, SeekOrigin.Begin);
            Section Category = ParseSection(Reader);

            Input.Seek(ParsePack(Reader, Category)[0].Offset, SeekOrigin.Begin);
            Section          String     = ParseSection(Reader);
            List <PackEntry> StringPack = ParsePack(Reader, String);

            foreach (PackEntry Entry in StringPack)
            {
                Input.Seek(Entry.Offset, SeekOrigin.Begin);

                byte[] Buffer = new byte[Entry.Length - 2];
                Reader.Read(Buffer, 0, Buffer.Length);
                Output.Append(UTF16.GetString(Buffer, Endian));
                Output.AppendLine(null);
                Output.AppendLine(null);
            }

            File.WriteAllText(OutFile, Output.ToString().TrimEnd());

            Reader.Close();

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Dumped " + Path.GetFileName(FileName) + "!");
            Console.ResetColor();
        }