public ResourceEntry WriteXBinEntry(ResourceEntry entry, XPathNodeIterator nodes, string sdsFolder, XmlNode descNode) { XBinResource resource = new XBinResource(); //read contents from XML entry nodes.Current.MoveToNext(); resource.Name = nodes.Current.Value; nodes.Current.MoveToNext(); resource.Unk01 = Convert.ToUInt64(nodes.Current.Value); nodes.Current.MoveToNext(); resource.Unk02 = Convert.ToUInt32(nodes.Current.Value); nodes.Current.MoveToNext(); resource.Unk03 = Convert.ToUInt64(nodes.Current.Value); nodes.Current.MoveToNext(); resource.Unk04 = nodes.Current.Value; nodes.Current.MoveToNext(); resource.Hash = Convert.ToUInt64(nodes.Current.Value); nodes.Current.MoveToNext(); entry.Version = Convert.ToUInt16(nodes.Current.Value); //finish resource.Data = File.ReadAllBytes(sdsFolder + "/" + resource.Name); resource.Size = resource.Data.Length; descNode.InnerText = resource.Name; entry.OtherRamRequired = (uint)(resource.Size); using (var stream = new MemoryStream()) { resource.Serialize(entry.Version, stream, _Endian); entry.Data = stream.ToArray(); } return(entry); }
private string ReadXBinEntry(ResourceEntry entry, XmlWriter resourceXML, string name, string xbinDir) { XBinResource resource = new XBinResource(); using (var stream = new MemoryStream(entry.Data)) { resource.Deserialize(entry.Version, stream, _Endian); } string[] dirs = resource.Name.Split('/'); string newPath = xbinDir; for (int z = 0; z != dirs.Length - 1; z++) { newPath += "/" + dirs[z]; Directory.CreateDirectory(newPath); } resourceXML.WriteElementString("File", resource.Name); resourceXML.WriteElementString("Unk01", resource.Unk01.ToString()); resourceXML.WriteElementString("Unk02", resource.Unk02.ToString()); resourceXML.WriteElementString("Unk03", resource.Unk03.ToString()); resourceXML.WriteElementString("Unk04", resource.Unk04); resourceXML.WriteElementString("Hash", resource.Hash.ToString()); resourceXML.WriteElementString("Version", entry.Version.ToString()); File.WriteAllBytes(xbinDir + "/" + resource.Name, resource.Data); if (resource.XMLData != null) { File.WriteAllBytes(xbinDir + "/" + resource.Name + ".xml", resource.XMLData); } resourceXML.WriteEndElement(); return(resource.Name); }