public int Size() { int returned = 0; returned += 0x20 + Table.Length * 0x10; SubFiles.ForEach(x => returned += (x.Object as IPersonaFile).Size()); return(returned); }
public int Size() { int returned = 0; returned += 0x20; // Add Header returned += SubFiles.Count * 0x30; // Add Textures Header returned += KeyList.Count * 0xa0; // Add Keys SubFiles.ForEach(x => returned += (x.Object as Graphic.DDS).Size()); // Add Textures return(returned); }
public byte[] Get() { byte[] returned; using (MemoryStream MS = new MemoryStream()) using (BinaryWriter writer = new BinaryWriter(MS, Encoding.ASCII, true)) { writer.Write(MagicNumber); writer.Write(0x2); writer.Write(Size()); writer.Write(0); writer.Write(0x20); writer.Write((ushort)SubFiles.Count); writer.Write((ushort)KeyList.Count); writer.Write(0x20); writer.Write(0x20 + SubFiles.Count * 0x30); List <int> pos = new List <int>(); SubFiles.ForEach(x => writer.Write(new byte[0x30])); KeyList.ForEach(x => x.Get(writer)); SubFiles.ForEach(x => { pos.Add((int)MS.Position); writer.Write((x.Object as Graphic.DDS).Get()); }); MS.Position = 0x20; for (int i = 0; i < SubFiles.Count; i++) { if (SubFiles[i].Object is Graphic.DDS dds) { writer.Write(i + 1); writer.Write(0); writer.Write(pos[i]); writer.Write(dds.Size()); writer.Write(dds.Header.Width); writer.Write(dds.Header.Height); writer.Write(0); writer.Write(0); byte[] temp = new byte[0x10]; string temp2 = Path.GetFileNameWithoutExtension(SubFiles[i].Name); Encoding.ASCII.GetBytes(temp2, 0, temp2.Length, temp, 0); writer.Write(temp); } } returned = MS.ToArray(); } return(returned); }
public byte[] Get() { byte[] returned = new byte[0]; using (MemoryStream MS = new MemoryStream()) { BinaryWriter writer = Utilities.IO.OpenWriteFile(MS, IsLittleEndian); if (GetTable(Table, SubFiles, 0x20)) { var temp = Table.FirstOrDefault(x => x[0] == 0x4); if (temp == null) { return(new byte[0]); } writer.Write(0); writer.Write(Size() - temp[1] * temp[2]); writer.Write(Encoding.ASCII.GetBytes("FLW0")); writer.Write(0); writer.Write(Table.Length); writer.Write(Unknown); foreach (var a in Table) { foreach (var b in a) { writer.Write(b); } } } else { return(new byte[0]); } SubFiles.ForEach(x => writer.Write((x.Object as IPersonaFile).Get())); returned = MS.ToArray(); } return(returned); }