internal FPakInfo ReadPakInfo(BinaryReader reader) { long fileSize = reader.BaseStream.Length; long[] OffsetsToTry = new long[4] { _SIZE, _SIZE8, _SIZE8A, _SIZE9 }; for (int i = 0; i < OffsetsToTry.Length; i++) { if (fileSize - OffsetsToTry[i] > 0) { reader.BaseStream.Seek(fileSize - OffsetsToTry[i], SeekOrigin.Begin); FPakInfo info = new FPakInfo(reader, OffsetsToTry[i]); if (info.Version != EPakVersion.INVALID) { return(info); } } } return(default);
internal FPakInfo ReadPakInfo(BinaryReader reader) { long offset = reader.BaseStream.Length - SERIALIZED_SIZE; long terminator = offset - 300; int maxNumCompressionMethods = 0; while (offset > terminator) { reader.BaseStream.Seek(offset, SeekOrigin.Begin); FPakInfo info = new FPakInfo(reader, maxNumCompressionMethods); if (info.Version != EPakVersion.INVALID) { return(info); } else { offset -= COMPRESSION_METHOD_NAME_LEN; maxNumCompressionMethods++; } } return(default);