Exemplo n.º 1
0
        private void BuildFSDirectory(DirectoryEntry dirEntry, Directory fsDirectory)
        {
            fsDirectory.Name = GetName(dirEntry);

            for (int i = 0; i < dirEntry.ContentEntryCount; i++)
            {
                TOCEntry entry = _rpfFile.TOC[dirEntry.ContentEntryIndex + i];
                if (entry.IsDirectory)
                {
                    var dir = new Directory();

                    BuildFSDirectory(entry as DirectoryEntry, dir);

                    dir.ParentDirectory = fsDirectory;

                    fsDirectory.AddObject(dir);
                }
                else
                {
                    var fileEntry = entry as FileEntry;
                    Common.File.DataLoadDelegate     load     = () => LoadData(fileEntry);
                    Common.File.DataStoreDelegate    store    = data => StoreData(fileEntry, data);
                    Common.File.DataIsCustomDelegate isCustom = () => fileEntry.CustomData != null;

                    var file = new Common.File(load, store, isCustom);
                    file.CompressedSize  = fileEntry.SizeInArchive;
                    file.IsCompressed    = fileEntry.IsCompressed;
                    file.Name            = GetName(fileEntry);
                    file.Size            = fileEntry.Size;
                    file.IsResource      = fileEntry.IsResourceFile;
                    file.ResourceType    = fileEntry.ResourceType;
                    file.ParentDirectory = fsDirectory;

                    fsDirectory.AddObject(file);
                }
            }
        }
Exemplo n.º 2
0
        private void BuildFSDirectory(DirectoryEntry dirEntry, Directory fsDirectory)
        {
            fsDirectory.Name = GetName(dirEntry);

            for (int i = 0; i < dirEntry.ContentEntryCount; i++)
            {
                TOCEntry entry = _rpfFile.TOC[dirEntry.ContentEntryIndex + i];
                if (entry.IsDirectory)
                {
                    var dir = new Directory();

                    BuildFSDirectory(entry as DirectoryEntry, dir);

                    dir.ParentDirectory = fsDirectory;

                    fsDirectory.AddObject(dir);
                }
                else
                {
                    var fileEntry = entry as FileEntry;
                    Common.File.DataLoadDelegate load = () => LoadData(fileEntry);
                    Common.File.DataStoreDelegate store = data => StoreData(fileEntry, data);
                    Common.File.DataIsCustomDelegate isCustom = () => fileEntry.CustomData != null;

                    var file = new Common.File(load, store, isCustom);
                    file.CompressedSize = fileEntry.SizeInArchive;
                    file.IsCompressed = fileEntry.IsCompressed;
                    file.Name = GetName(fileEntry);
                    file.Size = fileEntry.Size;
                    file.IsResource = fileEntry.IsResourceFile;
                    file.ResourceType = fileEntry.ResourceType;
                    file.ParentDirectory = fsDirectory;

                    fsDirectory.AddObject(file);
                }
            }
        }