Chess.Data.Piece.Pawn.GetValidMoves C# (CSharp) Метод

GetValidMoves() публичный Метод

public GetValidMoves ( Square board ) : IEnumerable
board Chess.Data.Entities.Square
Результат IEnumerable
        public override 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 newRow = row + LegalDirectionByTeam();

            var openingMove = SetupNewMove(newRow + 1, column);
            var normalMove = SetupNewMove(newRow, column);

            if (board[normalMove.EndRow][normalMove.EndColumn].ChessPiece == null)
            {
                legalMoves.Add(normalMove);

                if (ValidOpeningPushWithNoDefender(board, openingMove))
                    legalMoves.Add(openingMove);
            }

            if (column - 1 >= 0)
            {
                var attackLeft = SetupNewMove(newRow, column - 1);
                var leftOccupant = board[attackLeft.EndRow][attackLeft.EndColumn].ChessPiece;

                if (leftOccupant != null && leftOccupant.Team != Team)
                    legalMoves.Add(attackLeft);
            }

            if (column + 1 < 8)
            {
                var attackRight = SetupNewMove(newRow, column + 1);
                var rightOccupant = board[attackRight.EndRow][attackRight.EndColumn].ChessPiece;

                if (rightOccupant != null && rightOccupant.Team != Team)
                    legalMoves.Add(attackRight);
            }

            return legalMoves;
        }