/// <summary> /// setzt die Abschnittsdaten mit den Daten des <see cref="BinaryReaderWriter"/> ab der aktuellen (!) Position des <see cref="BinaryReaderWriter"/> /// </summary> /// <param name="type"></param> /// <param name="bw"></param> /// <returns></returns> public bool SetSectionDataFromWriter(int type, BinaryReaderWriter bw) { if (!ContainsType(type) || bw == null) { return(false); } Section sec = sections[type]; sec.Data = bw.ToArray(); sec.Position.Length = (uint)sec.Data.Length; return(true); }
/// <summary> /// schreibt den Blockheader und die Blockdaten /// </summary> /// <param name="wr"></param> public new void Write(BinaryReaderWriter wr) { BinaryReaderWriter wrtmp = new BinaryReaderWriter(); base.Write(wrtmp); SubCount = (UInt16)DataSize.Count; //Unknown1 = (UInt16)(SubCount + 1); wrtmp.Write(Unknown1); wrtmp.Write(SubCount); for (int i = 0; i < DataSize.Count; i++) { wrtmp.Write(DataSize[i]); } wrtmp.Write(HasCopyright); wrtmp.Write(Unknown2); wrtmp.Write(Unknown3); wrtmp.Write(Unknown4); wrtmp.Write(Unknown5); wrtmp.Write(Unknown6); wrtmp.Write(Unknown7); for (int i = 0; i < Name.Count; i++) { wrtmp.WriteString(Name[i]); } wrtmp.Write(Unknown8); wrtmp.Write(Unknown9); wrtmp.Seek(1); wrtmp.Write((short)(wrtmp.Length - 3)); // Länge des Datenbereiches schreiben wrtmp.Seek(0); wr.Write(wrtmp.ToArray()); wrtmp.Dispose(); }