public void Save(Stream to) { using var writer = new WcDataWriter(to); writer.Write(Encoding.ASCII.GetBytes(MagicNumber0)); writer.Write(MagicNumber1); writer.Write(FormatVersion); foreach (var uv in UG0) { writer.Write(uv); } writer.Write(Categories.Count() + 1); writer.Write(0u); writer.Write(Triggers.Count()); writer.Write(0u); writer.Write(TriggerComments.Count()); writer.Write(0u); writer.Write(CustomScripts.Count()); writer.Write(0u); writer.Write(Variables.Count()); writer.Write(0u); foreach (var uv in UG1) { writer.Write(uv); } writer.Write(WarcraftVersion); writer.Write(Variables.Count()); foreach (var v in Variables) { Produce(writer, v !); } writer.Write(Elements.Count + 1); foreach (var uv in UG2) { writer.Write(uv); } writer.Write(MapFileName); foreach (var uv in UG3) { writer.Write(uv); } if (FormatVersion >= 7) { foreach (var uv in UG4) { writer.Write(uv); } } foreach (var obj in Elements) { switch (obj) { case WtgCategory cat: Produce(writer, cat); break; case WtgTrigger trig: Produce(writer, trig); break; case WtgVariable v: Produce2(writer, v); break; } } }