'p', 'n', 'b', 'r', 'q', 'f', 'e', 'a', 'c', 'w', 'm',
'o', 'h', 'i', 'j', 'g', 'd', 'v', 'l', 's', 'u', 'k',
'x' };
+char pieceNickName[EmptySquare];
char PieceToChar(p)
ChessSquare p;
{
int i;
for(i=0; i< (int) EmptySquare; i++)
+ if(pieceNickName[i] == c) return (ChessSquare) i;
+ for(i=0; i< (int) EmptySquare; i++)
if(pieceToChar[i] == c) return (ChessSquare) i;
return EmptySquare;
}
{ /* [HGM] made dependent on CharToPiece to alow alternate piece letters */
ChessSquare piece = CharToPiece(whiteOnMove ? ToUpper(promoChar) : ToLower(promoChar) );
-
+ if(promoChar == '=') return whiteOnMove ? WhiteNonPromotion : BlackNonPromotion;
if(promoChar == NULLCHAR) return NormalMove;
switch(piece) {
piece == WhiteKnight && rt > BOARD_HEIGHT-3) /* promotion mandatory */
cl.kind = promoChar == '=' ? IllegalMove : WhitePromotionKnight;
else /* promotion optional, default is promote */
- cl.kind = promoChar == '=' ? NormalMove : WhitePromotionQueen;
+ cl.kind = promoChar == '=' ? WhiteNonPromotion : WhitePromotionQueen;
} else cl.kind = (promoChar == NULLCHAR || promoChar == 'x' || promoChar == '=') ?
NormalMove : IllegalMove;
piece == BlackKnight && rt < 2 ) /* promotion obligatory */
cl.kind = promoChar == '=' ? IllegalMove : BlackPromotionKnight;
else /* promotion optional, default is promote */
- cl.kind = promoChar == '=' ? NormalMove : BlackPromotionQueen;
+ cl.kind = promoChar == '=' ? BlackNonPromotion : BlackPromotionQueen;
} else cl.kind = (promoChar == NULLCHAR || promoChar == 'x' || promoChar == '=') ?
NormalMove : IllegalMove;
closure->kind = c == '=' ? IllegalMove : WhitePromotionKnight;
else /* promotion optional, default is promote */
closure->kind = c == '=' ? NormalMove : WhitePromotionQueen;
-
+ if(c != '=') closure->promoCharIn = 'q';
} else closure->kind = (c == NULLCHAR || c == 'x' || c == '=') ?
NormalMove : IllegalMove;
} else {
closure->kind = c == '=' ? IllegalMove : BlackPromotionKnight;
else /* promotion optional, default is promote */
closure->kind = c == '=' ? NormalMove : BlackPromotionQueen;
-
+ if(c != '=') closure->promoCharIn = 'q';
} else closure->kind = (c == NULLCHAR || c == 'x' || c == '=') ?
NormalMove : IllegalMove;
}