internal void Sort(FolderAsset parent, string name, int fileNameBaseOffset, byte[] fileNames)
{
int fileNameOffset = FileNameOffset - fileNameBaseOffset;
int fileIndex = FileIndex;
if (Used)
{
throw new InvalidDataException();
}
Used = true;
Parent = parent;
Name = name;
while (true)
{
byte nameCode = fileNames[fileNameOffset++];
if (nameCode == 0)
{
break;
}
byte nameLength = (byte)(nameCode & 0x7F);
bool isFolder = (nameCode & 0x80) != 0;
string childName = Encoding.ASCII.GetString(fileNames, fileNameOffset, nameLength);
fileNameOffset += nameLength;
if (isFolder)
{
int folderIndex = fileNames[fileNameOffset++] + (fileNames[fileNameOffset++] << 8);
RomFolder folder = Rom.Folders[folderIndex & 0xFFF];
folder.Unknown2 = (byte)(folderIndex >> 12);
if (folder.Unknown2 != 15)
{
}
folder.Sort(this, childName, fileNameBaseOffset, fileNames);
}
else
{
RomFile file = Rom.Files[fileIndex++];
file.Sort(this, childName);
}
}
}