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 possibleEndPositions = PossibleEndPositions(column, row);
foreach (var position in possibleEndPositions)
{
var newRow = position.Row;
var newColumn = position.Column;
if (EndPositionIsWithinBounds(newRow, newColumn))
{
var occupant = board[newRow][newColumn].ChessPiece;
if (occupant == null || occupant.Team != Team)
legalMoves.Add(SetupNewMove(newRow, newColumn));
}
}
return legalMoves;
}