private static SimpleTile GetSelectedTile(DraggableMap dmap, int x, int y) { int tilex = x / Tile.tilesize; int tiley = y / Tile.tilesize; dmap.HighlightTile(tilex, tiley); Bitmap b = new Bitmap(Tile.tilesize, Tile.tilesize); using (Graphics g = Graphics.FromImage(b)) { g.DrawImage( dmap.img, new Rectangle(0, 0, Tile.tilesize, Tile.tilesize), new Rectangle(tilex * Tile.tilesize, tiley * Tile.tilesize, Tile.tilesize, Tile.tilesize), GraphicsUnit.Pixel); } SimpleTile st = new SimpleTile(b); return st; }
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 draggableMap1_LeftClickDrag(DraggableMap dmap, MouseEventArgs obj) { int x, y; draggableMap1.GetMapPos(obj, out x, out y); draggableMap1.PutTile(x / Tile.tilesize, y / Tile.tilesize, paintTile); }