Exemple #1
0
 public VpkEntry(VpkDirectory directory, string path, uint crc32, byte[] preloadBytes, ushort archiveIndex, uint entryOffset, uint entryLength)
 {
     Directory    = directory;
     Path         = path;
     Crc32        = crc32;
     PreloadData  = preloadBytes;
     ArchiveIndex = archiveIndex;
     EntryOffset  = entryOffset;
     EntryLength  = entryLength;
 }
Exemple #2
0
 public VpkPackageStreamSource(VpkDirectory directory)
 {
     _directory = directory;
     _entries   = new Dictionary <string, VpkEntry>();
     _streams   = new Dictionary <ushort, Stream>();
     _folders   = new Dictionary <string, HashSet <string> >();
     _files     = new Dictionary <string, HashSet <string> >();
     foreach (var entry in directory.GetEntries().OfType <VpkEntry>())
     {
         var fn = entry.FullName;
         _entries.Add(fn, entry);
         var split  = fn.Split('/');
         var joined = "";
         for (var i = 0; i < split.Length; i++)
         {
             var sub  = split[i];
             var name = joined.Length == 0 ? sub : joined + '/' + sub;
             if (i == split.Length - 1)
             {
                 // File name
                 if (!_files.ContainsKey(joined))
                 {
                     _files.Add(joined, new HashSet <string>());
                 }
                 _files[joined].Add(name);
             }
             else
             {
                 // Folder name
                 if (!_folders.ContainsKey(joined))
                 {
                     _folders.Add(joined, new HashSet <string>());
                 }
                 if (!_folders[joined].Contains(sub))
                 {
                     _folders[joined].Add(name);
                 }
             }
             joined = joined.Length == 0 ? sub : joined + '/' + sub;
         }
     }
 }
Exemple #3
0
 public VpkEntryStream(VpkEntry entry, VpkDirectory directory)
 {
     _entry       = entry;
     _stream      = directory.OpenChunk(_entry);
     _streamStart = _stream.Position;
 }