void openLevelToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog ofDialog = new OpenFileDialog(); ofDialog.Filter = "Level Files (*.xml)|*.xml"; ofDialog.CheckFileExists = true; ofDialog.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(); levelData = newLevel; 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[0], (MapLayer)layers[0]); for (int i = 1; i < tileSets.Count; i++) map.AddTileset(tileSets[i]); for (int i = 1; i < layers.Count; i++) map.AddLayer(layers[i]); tilesetToolStripMenuItem.Enabled = true; mapLayerToolStripMenuItem.Enabled = true; charactersToolStripMenuItem.Enabled = true; chestsToolStripMenuItem.Enabled = true; keysToolStripMenuItem.Enabled = true; }
void btnOK_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(tbLevelName.Text)) { MessageBox.Show("You must enter a name for the level.", "Missing Level Name"); return; } if (string.IsNullOrEmpty(tbMapName.Text)) { MessageBox.Show("You must enter a name for the map of the level.", "Missing Map Name"); return; } int mapWidth = 0; int mapHeight = 0; if (!int.TryParse(mtbWidth.Text, out mapWidth) || mapWidth < 1) { MessageBox.Show("The width of the map must be greater than or equal to one.", "Map Size Error"); return; } if (!int.TryParse(mtbHeight.Text, out mapHeight) || mapHeight < 1) { MessageBox.Show("The height of the map must be greater than or equal to one.", "Map Size Error"); return; } levelData = new RpgLibrary.WorldClasses.LevelData( tbLevelName.Text, tbMapName.Text, mapWidth, mapHeight, new List<string>(), new List<string>(), new List<string>()); okPressed = true; this.Close(); }
void newLevelToolStripMenuItem_Click(object sender, EventArgs e) { using (FormNewLevel frmNewLevel = new FormNewLevel()) { frmNewLevel.ShowDialog(); if (frmNewLevel.OKPressed) { levelData = frmNewLevel.LevelData; tilesetToolStripMenuItem.Enabled = true; } } }