public override uint BeginSegment(string segmentName) { if (SageGame >= SageGame.Bfme) { var blokHeader = _binaryReader.ReadFourCc(bigEndian: true); if (blokHeader != "BLOK") { throw new InvalidStateException(); } var segmentEnd = _binaryReader.ReadUInt32(); var currentPosition = _binaryReader.BaseStream.Position; var segmentLength = (uint)(segmentEnd - currentPosition); Segments.Push(new Segment(currentPosition, segmentEnd, segmentName)); return(segmentLength); } else { var segmentLength = _binaryReader.ReadUInt32(); var currentPosition = _binaryReader.BaseStream.Position; Segments.Push(new Segment(currentPosition, currentPosition + segmentLength, segmentName)); return(segmentLength); } }
public override uint BeginSegment(string segmentName) { if (SageGame >= SageGame.Bfme) { throw new NotImplementedException(); } else { // Write placeholder for segment length - we'll patch this later. _binaryWriter.Write(0u); var currentPosition = _binaryWriter.BaseStream.Position; Segments.Push(new Segment(currentPosition, currentPosition, segmentName)); return(0u); } }