Alexandria.Platforms.NintendoDS.RomFolder.Sort C# (CSharp) Метод

Sort() приватный Метод

private Sort ( FolderAsset parent, string name, int fileNameBaseOffset, byte fileNames ) : void
parent Glare.Assets.FolderAsset
name string
fileNameBaseOffset int
fileNames byte
Результат void
        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);
                }
            }
        }

Usage Example

Пример #1
0
        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);
                }
            }
        }