private void openToolStripMenuItem1_Click(object sender, EventArgs e) { // TODO: ask to save old Tileset/Tilemap openFileDialog1.FileName = ""; openFileDialog1.Title = "Open Tileset"; openFileDialog1.Filter = "Image Files|*.bmp;*.png;*.jpg"; if (openFileDialog1.ShowDialog() != DialogResult.OK) { return; } // create new Tileset using (var bmp = new Bitmap(openFileDialog1.FileName)) { // sprite dimensions must be divisible by 8 if (bmp.Width % 8 != 0 || bmp.Height % 8 != 0) { MessageBox.Show( "Tileset dimensions are not divisible by 8!", "Invalid Sprite", MessageBoxButtons.OK, MessageBoxIcon.Error ); return; } // Tileset from sprite tileset = new Tileset(bmp); } // fill sizes for Tileset cmbTilesetWidth.Items.Clear(); foreach (var size in tileset.GetPerfectColumns()) { cmbTilesetWidth.Items.Add(size.ToString()); } // pick middle size cmbTilesetWidth.SelectedIndex = cmbTilesetWidth.Items.Count / 2; // finish tilesetFileOptions = new TilesetFileOptions { FileName = openFileDialog1.FileName, Format = TilesetFormat.BMP, Columns = 1 // this will be update later anyway }; UpdateTileset(true); // create new blank Tilemap tilemap = new Tilemap(30, 20); tilemapFileOptions = null; UpdateTilemap(); //saveToolStripMenuItem1.Enabled = true; //saveToolStripMenuItem2.Enabled = true; //saveAsToolStripMenuItem1.Enabled = true; //saveAsToolStripMenuItem2.Enabled = true; }
private void saveAsToolStripMenuItem1_Click(object sender, EventArgs e) { saveFileDialog1.FileName = ""; saveFileDialog1.Title = "Save Tileset"; saveFileDialog1.Filter = "Bitmap Files|*.bmp|Binary Files|*.bin"; short tilesetWidth; if (!short.TryParse(cmbTilesetWidth.Text, out tilesetWidth) || tilesetWidth <= 0) { tilesetWidth = 1; } if (saveFileDialog1.ShowDialog() == DialogResult.OK) { switch (saveFileDialog1.FilterIndex) { case 1: tilesetFileOptions = new TilesetFileOptions { FileName = saveFileDialog1.FileName, Format = TilesetFormat.BMP, Columns = tilesetWidth }; break; case 2: tilesetFileOptions = new TilesetFileOptions { FileName = saveFileDialog1.FileName, Format = TilesetFormat.BMP, Columns = tilesetWidth }; break; } try { tileset.Save(tilesetFileOptions); } catch (Exception ex) { MessageBox.Show( ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error ); } } }
private void mnuCreateTileset_Click(object sender, EventArgs e) { // TODO: ask to save Tilemap/Tileset openFileDialog1.FileName = ""; openFileDialog1.Title = "Create Tileset"; openFileDialog1.Filter = "Image Files|*.bmp;*.png;*.jpg"; if (openFileDialog1.ShowDialog() != DialogResult.OK) { return; } using (var bmp = new Bitmap(openFileDialog1.FileName)) { // Sprite dimensions must be divisible by 8 if (bmp.Width % 8 != 0 || bmp.Height % 8 != 0) { MessageBox.Show("Tileset source image dimensions are not divisible by 8!", "Invalid Image", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // Create Tilemap/Tileset (tileset, tilemap) = Tileset.Create(bmp, true); } // fill sizes for Tileset cmbTilesetWidth.Items.Clear(); foreach (var size in tileset.GetPerfectColumns()) { cmbTilesetWidth.Items.Add(size.ToString()); } // pick middle size cmbTilesetWidth.SelectedIndex = cmbTilesetWidth.Items.Count / 2; // finish tilesetFileOptions = null; tilemapFileOptions = null; UpdateTileset(true); UpdateTilemap(); mnuOpenTilemap.Enabled = true; mnuSaveTilemap.Enabled = true; mnuSaveTilemapAs.Enabled = true; mnuSaveTileset.Enabled = true; mnuSaveTilesetAs.Enabled = true; mnuPalette.Enabled = true; }