示例#1
0
        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;
        }
示例#2
0
        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
                        );
                }
            }
        }
示例#3
0
        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;
        }