public void Create(string ddsPath, string tpfPath)
        {
            string[]  ddsPaths = Directory.GetFiles(ddsPath, "*.dds");
            DdsFile[] ddsFiles = new DdsFile[ddsPaths.Length];
            for (int i = 0; i < ddsPaths.Length; i++)
            {
                ddsFiles[i] = new DdsFile(ddsPaths[i]);
            }

            ddsSumSize = (uint)ddsFiles.Sum(p => p.dataSize);
            entryCount = (uint)ddsFiles.Length;
            MemoryStream memData = new MemoryStream();

            using (BinaryReader binred = new BinaryReader(new MemoryStream(File.ReadAllBytes(tpfPath))))
            {
                using (BinaryWriter binwr = new BinaryWriter(memData))
                {
                    binwr.Write(binred.ReadInt32());
                    binwr.Write(ddsSumSize);
                    binwr.Write(entryCount);
                    binred.BaseStream.Position = 12;
                    binwr.Write(binred.ReadInt32());//idk

                    uint holdDataStartPos = binred.ReadUInt32();
                    uint dataStartPos     = holdDataStartPos;
                    binred.BaseStream.Position += 4;
                    for (int i = 0; i < entryCount; i++)
                    {
                        binwr.Write(dataStartPos);
                        binwr.Write(ddsFiles[i].dataSize);
                        binwr.Write(binred.ReadInt32()); //idk
                        binwr.Write(binred.ReadInt32()); //fileNameOffset
                        binwr.Write(binred.ReadInt32()); //0
                        dataStartPos += ddsFiles[i].dataSize;
                        binred.BaseStream.Position += 8;
                    }
                    binred.BaseStream.Position -= 8;
                    int fileNameBytesLen = (int)holdDataStartPos - (int)binwr.BaseStream.Position;
                    binwr.Write(binred.ReadBytes(fileNameBytesLen));
                    for (int i = 0; i < entryCount; i++)
                    {
                        binwr.Write(ddsFiles[i].data);
                    }
                }
            }

            data = memData.ToArray();
        }
        //idk, be continued?
        public void Export(string filePath)
        {
            using (BinaryReader binred = new BinaryReader(File.Open(filePath, FileMode.Open), Encoding.Unicode))
            {
                int  header     = binred.ReadInt32();
                uint size       = binred.ReadUInt32();
                uint entryCount = binred.ReadUInt32();

                int idk = binred.ReadInt32();

                DdsFile[] ddsFileArray = new DdsFile[entryCount];
                for (int i = 0; i < entryCount; i++)
                {
                    DdsFile dds = new DdsFile();
                    dds.FillData(binred);
                }
            }
        }