Chess.Domain.MoveGetter.DiagonalMoves C# (CSharp) Method

DiagonalMoves() public static method

public static DiagonalMoves ( int row, int column ) : IEnumerable
row int
column int
return IEnumerable
        public static IEnumerable<Move> DiagonalMoves(int row, int column)
        {
            var moves = new List<Move>();
            Action<int, int> addMove = (r, c) => moves.Add(new Move()
            {
                StartColumn = column,
                StartRow = row,
                EndColumn = c,
                EndRow = r
            });

            var down = column;
            var up = column;

            for (var r = row; r < 8; r++)
            {
                if (--down > 0)
                    addMove(r, down);
                if (--up < 8)
                    addMove(r, up);
            }

            down = column;
            up = column;

            for (var r = row; r >= 0; r--)
            {
                if (--down > 0)
                    addMove(r, down);
                if (--up < 8)
                    addMove(r, up);
            }

            return moves;
        }