void Save(bool saveAs = false)
        {
            if (TileSet == null)
            {
                return;
            }
            if (IsMapTileSet)
            {
                TileSet.Save();
                return;
            }


            if (saveAs || String.IsNullOrEmpty(CurrentFileName))
            {
                var dialog = new Microsoft.Win32.SaveFileDialog();
                dialog.Filter = "Tile sets (*.tileset)|*.tileset";
                if (dialog.ShowDialog() == true)
                {
                    CurrentFileName = dialog.FileName;
                    Save(CurrentFileName);
                }
                Save(CurrentFileName);
            }
            else
            {
                Save(CurrentFileName);
            }
        }
        void Save(string fileName)
        {
            if (TileSet == null)
            {
                return;
            }
            if (String.IsNullOrEmpty(fileName))
            {
                return;
            }

            TileSet.Save();

            byte[] data = MapSerializer.Instance.SerializeMapTileSet(TileSet.Source);
            using (var file = File.OpenWrite(fileName))
            {
                file.Write(data, 0, data.Length);
            }
        }