/// <summary> /// Initializes a new instance of the <see cref="NefsHeader"/> class. /// </summary> /// <param name="intro">Header intro.</param> /// <param name="toc">Header intro table of contents.</param> /// <param name="items">List of items.</param> public NefsHeader(NefsHeaderIntro intro, NefsHeaderIntroToc toc, NefsItemList items) { this.Intro = intro ?? throw new ArgumentNullException(nameof(intro)); this.TableOfContents = toc ?? throw new ArgumentNullException(nameof(toc)); this.Part3 = new NefsHeaderPart3(items); this.Part4 = new NefsHeaderPart4(items); this.Part1 = new NefsHeaderPart1(items, this.Part4); this.Part2 = new NefsHeaderPart2(items, this.Part3); this.Part5 = new NefsHeaderPart5(); this.Part6 = new NefsHeaderPart6(items); this.Part7 = new NefsHeaderPart7(items); this.Part8 = new NefsHeaderPart8(intro.HeaderSize - toc.OffsetToPart8); }
internal NefsHeader(FileStream file, NefsArchive archive, NefsProgressInfo p) { _archive = archive; p.BeginTask(0.15f, "Reading header intro..."); _intro = new NefsHeaderIntro(file, p); p.EndTask(); p.BeginTask(0.15f, "Reading header part 1..."); _part1 = new NefsHeaderPt1(file, _intro.Part1Offset, _intro.Part1Size, p); p.EndTask(); p.BeginTask(0.15f, "Reading header part 2..."); _part2 = new NefsHeaderPt2(file, _intro.Part2Offset, _intro.Part2Size, p); p.EndTask(); p.BeginTask(0.10f, "Reading header part 3..."); _part3 = new NefsHeaderPt3(file, _intro.Part3Offset, _intro.Part3Size, p); p.EndTask(); p.BeginTask(0.15f, "Reading header part 4..."); _part4 = new NefsHeaderPt4(file, _intro.Part4Offset, _intro.Part4Size, p); p.EndTask(); p.BeginTask(0.10f, "Reading header part 5..."); _part5 = new NefsHeaderPt5(file, _intro.Part5Offset, _intro.Part5Size, p); p.EndTask(); p.BeginTask(0.10f, "Reading header part 6..."); _part6 = new NefsHeaderPt6(file, _intro.Part6Offset, _intro.Part6Size, p); p.EndTask(); p.BeginTask(0.10f, "Reading header part 7..."); // Theres a section of data after header part 6 and the first section of compressed data. // I'm not sure what it is. Just copying for now. var firstItemOffset = _part1.FirstItemDataOffset; if (firstItemOffset > 0 && firstItemOffset > _intro.DataOffset) { _part7 = new NefsHeaderPt7(file, _intro.DataOffset, (uint)firstItemOffset - _intro.DataOffset); } p.EndTask(); }
/// <summary> /// Initializes a new instance of the <see cref="NefsHeader"/> class. /// </summary> /// <param name="intro">Header intro.</param> /// <param name="toc">Header intro table of contents.</param> /// <param name="part1">Header part 1.</param> /// <param name="part2">Header part 2.</param> /// <param name="part3">Header part 3.</param> /// <param name="part4">Header part 4.</param> /// <param name="part5">Header part 5.</param> /// <param name="part6">Header part 6.</param> /// <param name="part7">Header part 7.</param> /// <param name="part8">Header part 8.</param> public NefsHeader( NefsHeaderIntro intro, NefsHeaderIntroToc toc, NefsHeaderPart1 part1, NefsHeaderPart2 part2, NefsHeaderPart3 part3, NefsHeaderPart4 part4, NefsHeaderPart5 part5, NefsHeaderPart6 part6, NefsHeaderPart7 part7, NefsHeaderPart8 part8) { this.Intro = intro ?? throw new ArgumentNullException(nameof(intro)); this.TableOfContents = toc ?? throw new ArgumentNullException(nameof(toc)); this.Part1 = part1 ?? throw new ArgumentNullException(nameof(part1)); this.Part2 = part2 ?? throw new ArgumentNullException(nameof(part2)); this.Part3 = part3 ?? throw new ArgumentNullException(nameof(part3)); this.Part4 = part4 ?? throw new ArgumentNullException(nameof(part4)); this.Part5 = part5 ?? throw new ArgumentNullException(nameof(part5)); this.Part6 = part6 ?? throw new ArgumentNullException(nameof(part6)); this.Part7 = part7 ?? throw new ArgumentNullException(nameof(part7)); this.Part8 = part8 ?? throw new ArgumentNullException(nameof(part8)); }