public async Task LoadChildFiles() { ChildFiles = new List <FileMetadata>(); if (FirstFileOffset > 0) { var currentChild = await FileMetadata.Load(LevelData, IvfcLevelHeader, FirstFileOffset); ChildFiles.Add(currentChild); while (currentChild.NextSiblingFileOffset > 0) { currentChild = await FileMetadata.Load(LevelData, IvfcLevelHeader, currentChild.NextSiblingFileOffset); ChildFiles.Add(currentChild); } } }
public async Task Initialize() { DirectoryHashKeyTable = await LevelData.ReadArrayAsync(Header.DirectoryHashTableOffset, Header.DirectoryHashTableLength); RootDirectoryMetadataTable = await DirectoryMetadata.Load(LevelData, Header, 0); FileHashKeyTable = await LevelData.ReadArrayAsync(Header.FileHashTableOffset, Header.FileHashTableLength); var rootFiles = new List <FileMetadata>(); var currentRootFile = await FileMetadata.Load(LevelData, Header, 0); if (currentRootFile.Name.Length > 0) { rootFiles.Add(currentRootFile); while (currentRootFile.NextSiblingFileOffset > 0) { currentRootFile = await FileMetadata.Load(LevelData, Header, currentRootFile.NextSiblingFileOffset); rootFiles.Add(currentRootFile); } } RootFiles = rootFiles.ToArray(); }