X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=backend.c;h=1c4bddcde20b36628ed565ce5cc850c32a707194;hb=50b75711089c434a89fcb126a5db86e7eb8246a3;hp=948081f39c1fa43728583030b8bb9fce3c2001dc;hpb=c7c73acb1eafed45587dd140ef7fdf518415edd9;p=xboard.git diff --git a/backend.c b/backend.c index 948081f..1c4bddc 100644 --- a/backend.c +++ b/backend.c @@ -11755,11 +11755,20 @@ AutoPlayOneMove () 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 AnimateMove(boards[currentMove], fromX, fromY, toX, toY); if (appData.highlightLastMove) { @@ -15484,9 +15493,18 @@ ForwardInner (int target) 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 AnimateMove(boards[currentMove], fromX, fromY, toX, toY); } if (appData.highlightLastMove) { @@ -15851,7 +15869,7 @@ SaveSelected (FILE *g, int dummy, char *dummy2) if(lg->position >= 0) { // selected? LoadGame(f, nItem, "", TRUE); SaveGamePGN2(g); // leaves g open - cnt++; + cnt++; DoEvents(); } lg = (ListGame *) lg->node.succ; } @@ -15890,6 +15908,7 @@ CreateBookEvent () if(lg->position >= 0) { LoadGame(f, nItem, "", TRUE); AddGameToBook(TRUE); + DoEvents(); } lg = (ListGame *) lg->node.succ; }