Save() public method

public Save ( string filename ) : void
filename string
return void
Beispiel #1
0
        public bool SaveMap(string filename)
        {
            // Separate the Tiles //
            if (header.Scripts[0] == string.Empty)
            {
                SaveFileDialog diag = new SaveFileDialog();
                diag.InitialDirectory = Global.CurrentProject.Path + "\\maps";
                diag.Filter           = "Tileset Files (.rts)|*.rts";
                MessageBox.Show("This tileset has not been saved... You must specify a save location.", "Unsaved Tileset");
                if (diag.ShowDialog() == DialogResult.OK)
                {
                    header.Scripts[0] = Path.GetFileName(diag.FileName);
                }
                else
                {
                    MessageBox.Show("Can't save map without external tileset.");
                    return(false);
                }
            }

            BinaryWriter binwrite = new BinaryWriter(File.OpenWrite(filename));

            file_name = filename;

            // Write Header Data //
            binwrite.Write(".rmp".ToCharArray());
            binwrite.Write(header.VersionNum);
            binwrite.Write(byte.MinValue);
            binwrite.Write((byte)Layers.Count);
            binwrite.Write(byte.MinValue);
            binwrite.Write((short)Entities.Count);
            binwrite.Write(header.StartX);
            binwrite.Write(header.StartY);
            binwrite.Write((byte)header.StartLayer);
            binwrite.Write((byte)header.StartDirection);
            binwrite.Write((short)header.Scripts.Count);
            binwrite.Write((short)(Controls.Count - 1));
            binwrite.Write(new byte[235]);

            // Write Script Data //
            foreach (string s in header.Scripts)
            {
                binwrite.Write((short)s.Length);
                binwrite.Write(s.ToCharArray());
            }

            // Save Layers //
            foreach (Layer l in Layers)
            {
                l.Save(binwrite);
            }

            // Save Entities //
            foreach (Entity e in Entities)
            {
                e.Save(binwrite);
            }

            // Save Zones //
            foreach (Control c in Controls)
            {
                if (c is Zone)
                {
                    ((Zone)c).Save(binwrite);
                }
            }

            binwrite.Flush();
            binwrite.Close();

            // Save Tileset - Not w/ Map any Longer //
            string path = filename.Substring(0, filename.LastIndexOf("\\") + 1);

            Tileset.Save(path + header.Scripts[0]);
            return(true);
        }