void openLevelToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog ofDialog = new OpenFileDialog { Filter = "Level Files (*.xml)|*.xml", CheckFileExists = true, CheckPathExists = true }; DialogResult result = ofDialog.ShowDialog(); if (result != DialogResult.OK) { return; } string path = Path.GetDirectoryName(ofDialog.FileName); LevelData newLevel = null; MapData mapData = null; try { newLevel = XnaSerializer.Deserialize <LevelData>(ofDialog.FileName); mapData = XnaSerializer.Deserialize <MapData>(path + @"\Maps\" + newLevel.MapName + ".xml"); } catch (Exception exc) { MessageBox.Show(exc.Message, "Error reading level"); return; } tileSetImages.Clear(); tileSetData.Clear(); tileSets.Clear(); layers.Clear(); lbTileset.Items.Clear(); clbLayers.Items.Clear(); foreach (TilesetData data in mapData.Tilesets) { Texture2D texture = null; tileSetData.Add(data); lbTileset.Items.Add(data.TilesetName); GDIImage image = (GDIImage)GDIBitmap.FromFile(data.TilesetImageName); tileSetImages.Add(image); using (Stream stream = new FileStream(data.TilesetImageName, FileMode.Open, FileAccess.Read)) { texture = Texture2D.FromStream(GraphicsDevice, stream); tileSets.Add( new Tileset( texture, data.TilesWide, data.TilesHigh, data.TileWidthInPixels, data.TileHeightInPixels)); } } foreach (MapLayerData data in mapData.Layers) { clbLayers.Items.Add(data.MapLayerName, true); layers.Add(MapLayer.FromMapLayerData(data)); } lbTileset.SelectedIndex = 0; clbLayers.SelectedIndex = 0; nudCurrentTile.Value = 0; map = new TileMap(tileSets, layers); tilesetToolStripMenuItem.Enabled = true; mapLayerToolStripMenuItem.Enabled = true; charactersToolStripMenuItem.Enabled = true; chestsToolStripMenuItem.Enabled = true; keysToolStripMenuItem.Enabled = true; }