MegaMan.Editor.Bll.Tools.TileBrushToolBehavior.Click C# (CSharp) Method

Click() public method

public Click ( ScreenCanvas canvas, Point location ) : void
canvas MegaMan.Editor.Controls.ScreenCanvas
location Point
return void
        public void Click(ScreenCanvas canvas, Point location)
        {
            var screen = canvas.Screen;
            changes = new List<TileChange>();

            Point tilePos = new Point(location.X / screen.Tileset.TileSize, location.Y / screen.Tileset.TileSize);

            var selection = screen.Selection;
            if (selection != null)
            {
                // only paint inside selection
                if (!selection.Value.Contains(tilePos))
                {
                    startTiles = null;
                    endTiles = null;
                    return;
                }
            }

            startTiles = new int?[screen.Width, screen.Height];
            endTiles = new int?[screen.Width, screen.Height];

            // check for line drawing
            if ((Keyboard.Modifiers & ModifierKeys.Shift) != ModifierKeys.None)
            {
                var xdist = Math.Abs(tilePos.X - currentTilePos.X);
                var ydist = Math.Abs(tilePos.Y - currentTilePos.Y);

                if (xdist >= ydist)
                {
                    var min = Math.Min(currentTilePos.X, tilePos.X);
                    var max = Math.Max(currentTilePos.X, tilePos.X);
                    for (int i = min; i <= max; i++)
                    {
                        Draw(screen, i, currentTilePos.Y);
                    }
                }
                else
                {
                    var min = Math.Min(currentTilePos.Y, tilePos.Y);
                    var max = Math.Max(currentTilePos.Y, tilePos.Y);
                    for (int i = min; i <= max; i++)
                    {
                        Draw(screen, currentTilePos.X, i);
                    }
                }
            }
            else
            {
                Draw(screen, tilePos.X, tilePos.Y);
                held = true;
            }

            currentTilePos = tilePos;
        }