public void Save(BinaryWriter writer)
{
// save header:
writer.Write(Width);
writer.Write(Height);
writer.Write(Flags);
writer.Write(ParallaxX);
writer.Write(ParallaxY);
writer.Write(ScrollX);
writer.Write(ScrollY);
writer.Write(Segments.Count);
writer.Write(Reflective);
writer.Write(new byte[3]);
writer.Write((short)Name.Length);
writer.Write(Name.ToCharArray());
// save tiles:
for (int i = 0, size = Width * Height; i < size; ++i)
writer.Write(_tiles.Array[i]);
// save segments:
foreach (Segment segment in Segments)
segment.Save(writer);
}