Example #1
0
 public static void readEnglishZTR()
 {
     String[] allfiles = System.IO.Directory.GetFiles(@"C:\LR\HRW", "*_us.ztr", System.IO.SearchOption.AllDirectories);
     foreach (var file in allfiles)
     {
         Stream             fs         = File.OpenRead(file);
         FFXIIITextEncoding encoding   = FFXIIITextEncodingFactory.CreateEuro();
         ZtrFileUnpacker    unpacker   = new ZtrFileUnpacker(fs, encoding);
         ZtrFileEntry[]     entries    = unpacker.Unpack();
         String             outputfile = file.Substring(0, file.Length - 4) + ".txt";
         using (FileStream fs2 = File.OpenWrite(outputfile))
         {
             StreamWriter sw = new StreamWriter(fs2);
             foreach (ZtrFileEntry entry in entries)
             {
                 sw.WriteLine("");
                 if (entry.IsAnimatedText)
                 {
                     sw.WriteLine(entry.Key + " | " + entry.Value + " | Is Animated? " + entry.IsAnimatedText);
                 }
                 else
                 {
                     sw.WriteLine(entry.Key + " | " + entry.Value);
                 }
             }
             sw.Flush();
             sw.Close();
         }
     }
 }
Example #2
0
        private static TextEncodingInfo FromXml(XmlElement codepageNode)
        {
            FFXIIICodePage     codepage = FFXIIICodePageHelper.FromXml(codepageNode);
            FFXIIITextEncoding encoding = new FFXIIITextEncoding(codepage);

            return(new TextEncodingInfo(encoding));
        }
Example #3
0
 public ZtrFileTextUnpacker(Stream input, ZtrFileEntry[] output, ZtrFileHeaderLineInfo[] offsets, FFXIIITextEncoding encoding)
 {
     _input    = input;
     _output   = output;
     _offsets  = offsets;
     _encoding = encoding;
 }
Example #4
0
 public ZtrFilePacker(Stream output, FFXIIITextEncoding encoding, ZtrFileType?type)
 {
     _encoding = encoding;
     _output   = output;
     _bw       = new BinaryWriter(_output);
     _type     = type;
 }
        public TextEncodingInfo Provide()
        {
            ImgbArchiveAccessor accessor = CreateAccessor();

            WpdArchiveListing listing;

            WpdEntry[]       fontEntries;
            WflContent[]     fontContent;
            TextureSection[] textureHeaders;
            string[]         names;
            ReadXgrContent(accessor, out listing, out fontEntries, out fontContent, out textureHeaders, out names);

            DxTexture[] textures = ReadTextures(accessor, textureHeaders);
            try
            {
                char[] chars = new char[256 + WflContent.AdditionalTableCount];
                ConcurrentDictionary <char, short> codes = new ConcurrentDictionary <char, short>();
                if (_oldEncoding == null)
                {
                    _oldEncoding = InteractionService.TextEncoding.Provide();
                }

                UiEncodingWindowSource[] sources = PrepareWindowSources(fontContent, textures, names, chars, codes);
                UiEncodingWindow         wnd     = new UiEncodingWindow();
                foreach (UiEncodingWindowSource source in sources)
                {
                    wnd.Add(source);
                }

                if (wnd.ShowDialog() == true)
                {
                    FFXIIICodePage     codepage = new FFXIIICodePage(chars, new Dictionary <char, short>(codes));
                    FFXIIITextEncoding encoding = new FFXIIITextEncoding(codepage);
                    TextEncodingInfo   result   = new TextEncodingInfo(encoding);

                    result.Save();

                    Inject(listing, fontEntries, fontContent);

                    return(result);
                }
            }
            finally
            {
                textures.SafeDispose();
            }

            throw new OperationCanceledException();
        }
Example #6
0
        public void Show(ArchiveListing listing, ArchiveEntry entry)
        {
            _listing = listing;
            _entry   = entry;

            if (listing == null || entry == null)
            {
                _textBox.Text = null;
                return;
            }

            FFXIIITextEncoding encoding = InteractionService.TextEncoding.Provide().Encoding;

            ZtrFileEntry[] entries;
            using (Stream data = listing.Accessor.ExtractBinary(entry))
            {
                ZtrFileUnpacker unpacker = new ZtrFileUnpacker(data, encoding);
                entries = unpacker.Unpack();
            }

            if (entries.IsNullOrEmpty())
            {
                return;
            }

            using (MemoryStream ms = new MemoryStream(4096))
            {
                ZtrTextWriter writer = new ZtrTextWriter(ms, StringsZtrFormatter.Instance);
                writer.Write(entry.Name, entries);

                ms.Position = 0;
                using (StreamReader sr = new StreamReader(ms, System.Text.Encoding.UTF8, false))
                    _textBox.Text = sr.ReadToEnd();
            }

            Visibility = Visibility.Visible;
        }
Example #7
0
 public TextEncodingInfo(FFXIIITextEncoding encoding)
 {
     Encoding = Exceptions.CheckArgumentNull(encoding, "encoding");
 }
Example #8
0
        public static void writetoZTR()
        {
            String[] allfiles = System.IO.Directory.GetFiles(@"C:\LR\ysn\", "*.txt", System.IO.SearchOption.AllDirectories);
            foreach (var file in allfiles)

            {
                int    counter = 0;
                string line;
                List <ZtrFileEntry>    entries    = new List <ZtrFileEntry>();
                System.IO.StreamReader filestream = new System.IO.StreamReader(file);
                while ((line = filestream.ReadLine()) != null)
                {
                    string[]     splitstring = line.Split(new[] { " | " }, StringSplitOptions.None);
                    ZtrFileEntry lineentry   = new ZtrFileEntry();
                    lineentry.IsAnimatedText = false;
                    lineentry.Key            = splitstring[0];
                    if (splitstring[1].Contains("#"))
                    {
                        lineentry.Value = "";
                    }

                    else
                    {
                        if (splitstring[1].Contains("%"))
                        {
                            string[] deconstructedstring = splitstring[1].Split(new[] { "%" }, StringSplitOptions.None);
                            //byte[] charsepbytes = new byte[] { 0, 0, 1, 0 };
                            //string characterseparator = Convert(charsepbytes);
                            char          charzero           = '*';
                            char          charone            = '&';
                            string        characterseparator = "";
                            StringBuilder builder            = new StringBuilder(characterseparator);
                            builder.Append(charzero);
                            builder.Append(charone);


                            System.Diagnostics.Debug.WriteLine(builder.ToString());
                            lineentry.Value = deconstructedstring[0] + builder.ToString() + deconstructedstring[1];
                        }
                        else
                        {
                            lineentry.Value = splitstring[1];
                        }
                    }


                    entries.Add(lineentry);
                    System.Diagnostics.Debug.WriteLine(splitstring[1]);
                }

                ZtrFileEntry[] ztrarray = entries.ToArray();

                FFXIIITextEncoding encoding = FFXIIITextEncodingFactory.CreateEuro();

                String outputfile = @"C:\LR\ysn\" + Path.GetFileName(file) + ".ztr";
                using (FileStream fs2 = File.OpenWrite(outputfile))
                {
                    ZtrFilePacker packer = new ZtrFilePacker(fs2, encoding, ZtrFileType.BigEndianCompressedDictionary);
                    packer.Pack(ztrarray);
                    StreamWriter sw = new StreamWriter(fs2);

                    sw.Flush();
                    sw.Close();
                }
            }
        }
Example #9
0
 public ZtrFileUnpacker(Stream input, FFXIIITextEncoding encoding)
 {
     _encoding = encoding;
     _input    = input;
     _br       = new BinaryReader(_input);
 }
Example #10
0
 public ZtrFileTextPacker(Stream output, ZtrFileEntry[] input, FFXIIITextEncoding encoding)
 {
     _output   = output;
     _input    = input;
     _encoding = encoding;
 }