internal override void SaveData(BinaryWriter writer)
{
long startpos = writer.BaseStream.Position;
var svSize = (uint)this.Size;
var svSize2 = (uint)this.Size2;
WriteString(writer, "GRUP");
writer.Write(svSize); // Write uncompressed size for now
writer.Write(this.data);
writer.Write(this.groupType);
writer.Write(this.dateStamp);
writer.Write(this.flags); // should this check for oblivion?
foreach (Rec r in this.Records)
{
r.SaveData(writer);
}
writer.Flush();
long curpos = writer.BaseStream.Position;
var wrSize = (uint)(curpos - startpos);
if (wrSize != svSize2)
{
// fix size due to compression
writer.BaseStream.Position = startpos + 4;
writer.Write(wrSize); // Write the actuall compressed group size
writer.BaseStream.Position = curpos;
}
}