public List <PieceMove> GetMoves(Grid pos) { Piece piece = chessBoard.Board[pos.row, pos.column]; if (piece == null || piece.color != turn) { return(new List <PieceMove>()); } List <PieceMove> moves = new List <PieceMove>(); if (check != null && piece.color == check.checkColor && piece.GetType() != typeof(King)) { foreach (PieceMove move in piece.GetPieceMoves(pos)) { if (!check.checkPositions.Contains(move.newPos) && move.newPos != check.piecePos) { continue; } else if (TestMove(move)) { moves.Add(move); } } return(moves); } return(piece.GetPieceMoves(pos)); }