Fix 50-move counter in ICS mode
authorH.G. Muller <h.g.muller@hccnet.nl>
Sun, 26 Feb 2012 21:45:12 +0000 (22:45 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sun, 26 Feb 2012 21:45:12 +0000 (22:45 +0100)
Marking irreversible moves in the EP_STATUS did not work in ICS mode,
as ApplyMove,which did that is never executed there. Only the boards
sent by ICS are displayed,especially in observing mode. Now the status is
derived from the ICS mov strings (x in the SAN move, or P in the long move.

backend.c

index 2553afb..f00997e 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -4509,7 +4509,10 @@ ParseBoard12 (char *string)
         r = boards[moveNum][CASTLING][5] = initialRights[5];
     }
     /* [HGM] e.p. rights. Assume that ICS sends file number here? */
-    boards[moveNum][EP_STATUS] = double_push == -1 ? EP_NONE : double_push + BOARD_LEFT;
+    boards[moveNum][EP_STATUS] = EP_NONE;
+    if(str[0] == 'P') boards[moveNum][EP_STATUS] = EP_PAWN_MOVE;
+    if(strchr(move_str, 'x')) boards[moveNum][EP_STATUS] = EP_CAPTURE;
+    if(double_push !=  -1) boards[moveNum][EP_STATUS] = double_push + BOARD_LEFT;
 
 
     if (ics_getting_history == H_GOT_REQ_HEADER ||