Example #1
0
        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;
                }
            }
        }