public void ReadXMLEntry(ResourceEntry entry, XmlWriter resourceXML, string name, string xmlDir)
        {
            resourceXML.WriteElementString("File", name);
            XmlResource resource = new XmlResource();

            string[] dirs   = name.Split('/');
            string   xmldir = xmlDir;

            for (int z = 0; z != dirs.Length - 1; z++)
            {
                xmldir += "/" + dirs[z];
                Directory.CreateDirectory(xmldir);
            }

            using (MemoryStream stream = new MemoryStream(entry.Data))
            {
                resource = new XmlResource();
                resource.Deserialize(entry.Version, stream, Endian);

                if (resource.Unk3)
                {
                    File.WriteAllBytes(xmlDir + "/" + name + ".xml", entry.Data);
                }
                else
                {
                    File.WriteAllText(xmlDir + "/" + name + ".xml", resource.Content);
                }
            }

            resourceXML.WriteElementString("XMLTag", resource.Tag);
            resourceXML.WriteElementString("Unk1", Convert.ToByte(resource.Unk1).ToString());
            resourceXML.WriteElementString("Unk3", Convert.ToByte(resource.Unk3).ToString());
            resourceXML.WriteElementString("Version", entry.Version.ToString());
            resourceXML.WriteEndElement(); //finish early.
        }
Example #2
0
        public string ReadXMLEntry(ResourceEntry entry, XmlWriter resourceXML, string name, string xmlDir)
        {
            XmlResource resource = new XmlResource();

            using (MemoryStream stream = new MemoryStream(entry.Data))
            {
                // Unpack our XML Resource.
                resource = new XmlResource();
                resource.Deserialize(entry.Version, stream, Endian);
                name = resource.Name;

                // Create the directories.
                string[] dirs   = name.Split(new char[] { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries);
                string   xmldir = xmlDir;
                for (int z = 0; z != dirs.Length - 1; z++)
                {
                    xmldir = Path.Combine(xmldir, dirs[z]);
                    Directory.CreateDirectory(xmldir);
                }

                // Set the filename we want to save the file too.
                string FileName = Path.Combine(xmldir, Path.GetFileName(name) + ".xml");

                if (resource.bFailedToDecompile)
                {
                    byte[] data = stream.ReadBytes((int)(stream.Length - stream.Position));
                    File.WriteAllBytes(FileName, data);
                }
                else
                {
                    // 08/08/2020. Originally was File.WriteAllText, but caused problems with some XML documents.
                    using (StreamWriter writer = new StreamWriter(File.Open(FileName, FileMode.Create)))
                    {
                        writer.WriteLine(resource.Content);
                    }
                }
            }

            resourceXML.WriteElementString("File", name);
            resourceXML.WriteElementString("XMLTag", resource.Tag);
            resourceXML.WriteElementString("Unk1", Convert.ToByte(resource.Unk1).ToString());
            resourceXML.WriteElementString("Unk3", Convert.ToByte(resource.Unk3).ToString());
            resourceXML.WriteElementString("FailedToDecompile", Convert.ToByte(resource.bFailedToDecompile).ToString());
            resourceXML.WriteElementString("Version", entry.Version.ToString());
            resourceXML.WriteEndElement(); //finish early.
            return(name);
        }
Example #3
0
        public void ReadXMLEntry(ResourceEntry entry, XmlWriter resourceXML, string name, string xmlDir)
        {
            resourceXML.WriteElementString("File", name);
            XmlResource resource = new XmlResource();

            if (name == "/config/gui/Screens/MainMenu/TheStory")
            {
                using (BinaryWriter writer = new BinaryWriter(File.Open("file2.bin", FileMode.Create)))
                    writer.Write(entry.Data);
            }
            //try
            //{
            string[] dirs = name.Split('/');
            resource = new XmlResource();
            resource.Deserialize(entry.Version, new MemoryStream(entry.Data), Endian.Little);
            string xmldir = xmlDir;

            for (int z = 0; z != dirs.Length - 1; z++)
            {
                xmldir += "/" + dirs[z];
                Directory.CreateDirectory(xmldir);
            }
            if (!resource.Unk3)
            {
                File.WriteAllText(xmlDir + "/" + name + ".xml", resource.Content);
            }
            else
            {
                using (BinaryWriter writer = new BinaryWriter(File.Open(xmlDir + "/" + name + ".xml", FileMode.Create)))
                {
                    writer.Write(entry.Data);
                }
            }
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show(string.Format("ERROR CONVERTING XML: \nFile{0} \nError: {1}", name, ex.Message));
            //}
            resourceXML.WriteElementString("XMLTag", resource.Tag);
            resourceXML.WriteElementString("Unk1", Convert.ToByte(resource.Unk1).ToString());
            resourceXML.WriteElementString("Unk3", Convert.ToByte(resource.Unk3).ToString());
            resourceXML.WriteElementString("Version", entry.Version.ToString());
            resourceXML.WriteEndElement(); //finish early.
        }