private void animatedTIlesetToolStripMenuItem_Click(object sender, EventArgs e) { FormNewAnimatedTileset frm = new FormNewAnimatedTileset(); frm.ShowDialog(); if (frm.Tileset == null) { return; } animatedSetData = frm.Tileset; try { GDIImage image = (GDIImage)GDIBitmap.FromFile(animatedSetData.TilesetImageName); pbAnimatedSet.Image = image; Stream stream = new FileStream(animatedSetData.TilesetImageName, FileMode.Open, FileAccess.Read); Texture2D texture = Texture2D.FromStream(GraphicsDevice, stream); animatedSet = new AnimatedTileset( texture, animatedSetData.FramesAcross, animatedSetData.TilesHigh, animatedSetData.TileWidthInPixels, animatedSetData.TileHeightInPixels); if (map != null) { map.AddAnimatedTileset(animatedSet); } sbAnimatedTile.Maximum = 0; chkPaintAnimated.Enabled = true; stream.Close(); stream.Dispose(); } catch (Exception ex) { MessageBox.Show("Error reading file.\n" + ex.Message, "Error reading image"); return; } }
void btnOK_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(tbTilesetImage.Text)) { MessageBox.Show("You must select an image for the tileset in order to proceed."); return; } int tileWidth = 0; int tileHeight = 0; int frames = 0; int rows = 0; if (!int.TryParse(tbTileWidth.Text, out tileWidth)) { MessageBox.Show("Tile width must be an integer value."); return; } else if (tileWidth < 1) { MessageBox.Show("Tile width must me greater than zero."); return; } if (!int.TryParse(tbTileHeight.Text, out tileHeight)) { MessageBox.Show("Tile height must be an integer value."); return; } else if (tileHeight < 1) { MessageBox.Show("Tile height must be greater than zero."); return; } if (!int.TryParse(tbFrames.Text, out frames)) { MessageBox.Show("Frames must be an integer value."); return; } else if (frames < 1) { MessageBox.Show("Frames must me greater than zero."); return; } if (!int.TryParse(tbRows.Text, out rows)) { MessageBox.Show("Rows must be an integer value."); return; } else if (rows < 1) { MessageBox.Show("Rows must be greater than zero."); return; } Tileset = new AnimatedTilesetData { TilesetName = tbTilesetImage.Text, TilesetImageName = tbTilesetImage.Text, FramesAcross = frames, TilesHigh = rows, TileWidthInPixels = tileWidth, TileHeightInPixels = tileHeight }; this.Close(); }
void btnCancel_Click(object sender, EventArgs e) { Tileset = null; this.Close(); }
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; CharacterLayerData charData = null; try { newLevel = XnaSerializer.Deserialize <LevelData>(ofDialog.FileName); mapData = XnaSerializer.Deserialize <MapData>(path + @"\Maps\" + newLevel.MapName + ".xml"); charData = XnaSerializer.Deserialize <CharacterLayerData>(path + @"\Chars\" + newLevel.LevelName + ".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(); collisionLayer.Collisions.Clear(); animatedLayer.AnimatedTiles.Clear(); characters.Characters.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)); } } using (Stream textureStream = new FileStream(mapData.AnimatedTileset.TilesetImageName, FileMode.Open, FileAccess.Read)) { Texture2D aniamtedTexture = Texture2D.FromStream(GraphicsDevice, textureStream); animatedSet = new AnimatedTileset( aniamtedTexture, mapData.AnimatedTileset.FramesAcross, mapData.AnimatedTileset.TilesHigh, mapData.AnimatedTileset.TileWidthInPixels, mapData.AnimatedTileset.TileHeightInPixels); animatedSetData = mapData.AnimatedTileset; } 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; sbAnimatedTile.Maximum = 0; map = new TileMap(tileSets[0], animatedSet, (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]); } foreach (var collision in mapData.Collisions.Collisions) { collisionLayer.Collisions.Add(collision.Key, collision.Value); } foreach (var tile in mapData.AnimatedTiles.AnimatedTiles) { animatedLayer.AnimatedTiles.Add(tile.Key, tile.Value); } foreach (var c in charData.Characters) { Character character; if (c.Value is NonPlayerCharacterData) { Entity entity = new Entity(c.Value.Name, c.Value.EntityData, c.Value.Gender, EntityType.NPC); using (Stream stream = new FileStream(c.Value.TextureName, FileMode.Open, FileAccess.Read)) { Texture2D texture = Texture2D.FromStream(GraphicsDevice, stream); AnimatedSprite sprite = new AnimatedSprite(texture, Animations); sprite.Position = new Vector2(c.Key.X * Engine.TileWidth, c.Key.Y * Engine.TileHeight); character = new NonPlayerCharacter(entity, sprite); ((NonPlayerCharacter)character).SetConversation( ((NonPlayerCharacterData)c.Value).CurrentConversation); characters.Characters.Add(c.Key, character); } } } tilesetToolStripMenuItem.Enabled = true; mapLayerToolStripMenuItem.Enabled = true; charactersToolStripMenuItem.Enabled = true; chestsToolStripMenuItem.Enabled = true; keysToolStripMenuItem.Enabled = true; }