CopyBoard(filePosition, boards[0]);
CopyBoard(initialPosition, boards[0]);
}
+ } else if(*appData.fen != NULLCHAR) {
+ if(ParseFEN(filePosition, &blackPlaysFirst, appData.fen, TRUE) && !blackPlaysFirst) {
+ startedFromPositionFile = TRUE;
+ Reset(TRUE, TRUE);
+ }
}
if (initialMode == AnalyzeMode) {
if (appData.noChessProgram) {
initialRights[i] = filePosition[CASTLING][i];
startedFromSetupPosition = TRUE;
}
+ if(*appData.men) LoadPieceDesc(appData.men);
CopyBoard(boards[0], initialPosition);
SetHighlights(-1, -1, toX, toY);
}
} else {
- int viaX = moveList[currentMove][5] - AAA;
- int viaY = moveList[currentMove][6] - ONE;
fromX = moveList[currentMove][0] - AAA;
fromY = moveList[currentMove][1] - ONE;
HistorySet(parseList, backwardMostMove, forwardMostMove, currentMove); /* [AS] */
if(moveList[currentMove][4] == ';') { // multi-leg
- ChessSquare piece = boards[currentMove][viaY][viaX];
- AnimateMove(boards[currentMove], fromX, fromY, viaX, viaY);
- boards[currentMove][viaY][viaX] = boards[currentMove][fromY][fromX];
- AnimateMove(boards[currentMove], fromX=viaX, fromY=viaY, toX, toY);
- boards[currentMove][viaY][viaX] = piece;
- } else
+ killX = moveList[currentMove][5] - AAA;
+ killY = moveList[currentMove][6] - ONE;
+ }
AnimateMove(boards[currentMove], fromX, fromY, toX, toY);
+ killX = killY = -1;
if (appData.highlightLastMove) {
SetHighlights(fromX, fromY, toX, toY);
char buf[MSG_SIZ];
int gn = gameNumber;
ListGame *lg = NULL;
- int numPGNTags = 0;
+ int numPGNTags = 0, i;
int err, pos = -1;
GameMode oldGameMode;
VariantClass v, oldVariant = gameInfo.variant; /* [HGM] PGNvariant */
if (appData.debugMode)
fprintf(debugFP, "Parsed game start '%s' (%d)\n", yy_text, (int) cm);
+ for(i=0; i<EmptySquare; i++) { FREE(pieceDesc[i]); pieceDesc[i] = NULL; } // reset VariantMen
+
if (cm == XBoardGame) {
/* Skip any header junk before position diagram and/or move 1 */
for (;;) {
SetHighlights(-1, -1, toX, toY);
}
} else {
- int viaX = moveList[target - 1][5] - AAA;
- int viaY = moveList[target - 1][6] - ONE;
fromX = moveList[target - 1][0] - AAA;
fromY = moveList[target - 1][1] - ONE;
if (target == currentMove + 1) {
if(moveList[target - 1][4] == ';') { // multi-leg
- ChessSquare piece = boards[currentMove][viaY][viaX];
- AnimateMove(boards[currentMove], fromX, fromY, viaX, viaY);
- boards[currentMove][viaY][viaX] = boards[currentMove][fromY][fromX];
- AnimateMove(boards[currentMove], viaX, viaY, toX, toY);
- boards[currentMove][viaY][viaX] = piece;
- } else
+ killX = moveList[target - 1][5] - AAA;
+ killY = moveList[target - 1][6] - ONE;
+ }
AnimateMove(boards[currentMove], fromX, fromY, toX, toY);
+ killX = killY = -1;
}
if (appData.highlightLastMove) {
SetHighlights(fromX, fromY, toX, toY);