Пример #1
0
        public int Size()
        {
            int returned = 0;

            returned += 0x20 + Table.Length * 0x10;
            SubFiles.ForEach(x => returned += (x.Object as IPersonaFile).Size());

            return(returned);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }