Chess.Data.Piece.King.GetValidMoves C# (CSharp) Method

GetValidMoves() public method

public GetValidMoves ( Square board ) : System.Collections.Generic.IEnumerable
board Chess.Data.Entities.Square
return System.Collections.Generic.IEnumerable
        public override System.Collections.Generic.IEnumerable<Move> GetValidMoves(Square[][] board)
        {
            var legalMoves = new List<Move>();

            if (!CurrentColumn.HasValue || !CurrentRow.HasValue || !Alive) return legalMoves;

            var column = CurrentColumn.Value;
            var row = CurrentRow.Value;

            var possibleEndPosition = new[]
            {
                new Tuple<int, int>(row, column + 1),
                new Tuple<int, int>(row, column - 1),
                new Tuple<int, int>(row + 1, column + 1),
                new Tuple<int, int>(row + 1, column - 1),
                new Tuple<int, int>(row - 1, column + 1),
                new Tuple<int, int>(row - 1, column - 1),
                new Tuple<int, int>(row + 1, column),
                new Tuple<int, int>(row - 1, column),
            };

            foreach (var position in possibleEndPosition)
            {
                var newRow = position.Item1;
                var newColumn = position.Item2;

                if (newRow < 8 && newRow >= 0)
                    if (newColumn < 8 && newColumn >= 0)
                    {
                        var occupant = board[newRow][newColumn].ChessPiece;
                        if (occupant == null || occupant.Team != Team)
                            legalMoves.Add(SetupNewMove(newRow, newColumn));
                    }
            }

            return legalMoves;
        }