private void OpenFile(string filename) { var img = new Bitmap(filename); img.SetResolution(96, 96); string name = Path.GetFileNameWithoutExtension(filename); tc_topRight.TabPages.Add(name, name); DraggableMap dm = new DraggableMap(); tc_topRight.TabPages[name].Controls.Add(dm); Button basicTile = new Button(); basicTile.Click += new EventHandler(basicTile_Click); basicTile.Text = "Create Basic Tile"; basicTile.Dock = DockStyle.Bottom; tc_topRight.TabPages[name].Controls.Add(basicTile); Button autoTile12 = new Button(); autoTile12.Click += new EventHandler((obj, evt) => { AutoTile12 at12 = new AutoTile12(); DraggableMap dmap = ((Button)obj).Tag as DraggableMap; int x, y; dmap.GetHighlightedTile(out x, out y); for (int i = 0; i < AutoTile12.tileToRawTileIndex.Length; i++) { Rectangle rect = AutoTile12.tileToRawTileIndex[i]; SimpleTile st = GetSelectedTile(dmap, rect.X + x * Tile.tilesize, rect.Y + y * Tile.tilesize); at12.rawtiles[i] = st; } AddAutotile12(at12, at12); }); autoTile12.Tag = dm; autoTile12.Text = "Create Autotile"; autoTile12.Dock = DockStyle.Bottom; autoTile12.Enabled = false; tc_topRight.TabPages[name].Controls.Add(autoTile12); dm.map = new Tile[img.Width / Tile.tilesize, img.Height / Tile.tilesize, 1]; dm.img = img; dm.Dock = DockStyle.Fill; dm.LeftClick += new Action<DraggableMap, MouseEventArgs>((dmap, evt) => { int x, y; dmap.GetMapPos(evt, out x, out y); SimpleTile st = GetSelectedTile(dmap, x, y); currentTile = st; if (dmap.highlightwidth == 3 && dmap.highlightheight == 4) { autoTile12.Enabled = true; } else { autoTile12.Enabled = false; } }); dm.LeftClickDrag += new Action<DraggableMap, MouseEventArgs>((dmap, evt) => { int x, y; dmap.GetMapPos(evt, out x, out y); int tilex = x / Tile.tilesize; int tiley = y / Tile.tilesize; int htilex, htiley; dmap.GetHighlightedTile(out htilex, out htiley); dmap.HighlightTile(Math.Min(tilex, htilex), Math.Min(tiley, htiley)); int dx = Math.Max(Math.Abs(tilex - htilex + 1), 1); int dy = Math.Max(Math.Abs(tiley - htiley + 1), 1); dmap.highlightwidth = dx; dmap.highlightheight = dy; if (dx == 3 && dy == 4) { autoTile12.Enabled = true; } else { autoTile12.Enabled = false; } }); }
void autoTile12_Click(object sender, EventArgs e) { if (selectedBasicTile != null) { Tile autotile = selectedBasicTile; AutoTile12 at = new AutoTile12(); AddAutotile12(autotile, at); } }
private void btn_loadtiles_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.ShowDialog(); if (string.IsNullOrEmpty(ofd.FileName)) { return; } string basename = Path.Combine(Path.GetDirectoryName(ofd.FileName), Path.GetFileNameWithoutExtension(ofd.FileName)); string basictilesname = basename + ".basictiles"; string tilesname = basename + ".tiles"; string pngname = basename + ".png"; if (!File.Exists(basictilesname) || !File.Exists(tilesname)) { return; } using (Bitmap bmp = new Bitmap(pngname)) { using (FormattedReader tiles = new FormattedReader(tilesname)) using (FormattedReader basictiles = new FormattedReader(basictilesname)) { var btff = basictiles.Read<BasicTilesFileFormat>(); var simpletiles = btff.tiles.Select(x => new SimpleTile(x, bmp)).ToArray(); //foreach (var st in simpletiles) //{ // AddBasicTile(st); //} var tff = tiles.Read<TilesFileFormat>(); foreach (var tile in tff.tiles) { if (tile.type == TileType.SIMPLE) { AddSimpleTile(simpletiles[tile.simp[0].basictile]); } else if (tile.type == TileType.AUTOTILE12) { AutoTile12 at = new AutoTile12(simpletiles, tile.auto[0].basictiles); AddAutotile12(at, at); } else if (tile.type == TileType.AUTOTILE94) { AutoTile94 at = new AutoTile94(simpletiles, tile.auto[0].basictiles); AddAutotile94(at, at); } } } } }
private void AddAutotile12(Tile autotile, AutoTile12 at) { RadioButton btn = new RadioButton(); btn.Appearance = Appearance.Button; btn.Size = new System.Drawing.Size(40, 40); btn.Image = autotile.GetBitmap(0, 0); int t = Tile.tilesize; var twelve = new Bitmap(t * 3, t * 4); using (Graphics g = Graphics.FromImage(twelve)) { for (int x = 0; x < 3; x++) { for (int y = 0; y < 4; y++) { g.DrawImage(autotile.GetBitmap(0, 0), t * x, t * y); } } } btn.Tag = at; btn.Click += new EventHandler((o, evt) => { paintTile = (Tile)((RadioButton)o).Tag; populatePanel2WithTileEditor(); }); flow_tiles.Controls.Add(btn); }