Allow shuffling indicators in FEN
authorH.G. Muller <h.g.muller@hccnet.nl>
Sun, 2 Feb 2014 13:09:19 +0000 (14:09 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sun, 2 Feb 2014 13:21:43 +0000 (14:21 +0100)
If the back ranks are enclosed by < > in a FEN, the route to shuffle
initial positions is invoked on it.

backend.c

index 40c1a38..12ebb63 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -17897,6 +17897,7 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen, Boolean autoSize)
     }
 
     if(subst) return FALSE; // substitution requested, but no holdings
+    if(shuffle) SetUpShuffle(board, appData.defaultFrcPosition);
 
     while(*p == ' ') p++;
 
@@ -18022,7 +18023,8 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen, Boolean autoSize)
       }
       for(i=0; i<nrCastlingRights; i++)
         if(board[CASTLING][i] != NoRights) initialRights[i] = board[CASTLING][i];
-      if(gameInfo.variant == VariantSChess) for(i=0; i<BOARD_FILES; i++) board[VIRGIN][i] = virgin[i];
+      if(gameInfo.variant == VariantSChess)
+        for(i=0; i<BOARD_FILES; i++) board[VIRGIN][i] = shuffle ? VIRGIN_W | VIRGIN_B : virgin[i]; // when shuffling assume all virgin
     if (appData.debugMode) {
         fprintf(debugFP, "FEN castling rights:");
         for(i=0; i<nrCastlingRights; i++)