Fix exposure of atomic captures
authorH.G. Muller <h.g.muller@hccnet.nl>
Thu, 11 Oct 2012 17:44:22 +0000 (19:44 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sun, 21 Oct 2012 09:28:22 +0000 (11:28 +0200)
The grid lines had to be repaired too, so damage marker 2 had to be used.

board.c
draw.c

diff --git a/board.c b/board.c
index 96cbd7b..8b266a2 100644 (file)
--- a/board.c
+++ b/board.c
@@ -582,6 +582,7 @@ AnimateAtomicCapture (Board board, int fromX, int fromY, int toX, int toY)
        FrameDelay(appData.animSpeed);
     }
     board[fromY][toY] = piece;
        FrameDelay(appData.animSpeed);
     }
     board[fromY][toY] = piece;
+    DrawGrid();
 }
 
 /* Main control logic for deciding what to animate and how */
 }
 
 /* Main control logic for deciding what to animate and how */
@@ -639,11 +640,11 @@ AnimateMove (Board board, int fromX, int fromY, int toX, int toY)
   if(Explode(board, fromX, fromY, toX, toY)) { // mark as damaged
     int i,j;
     for(i=0; i<BOARD_WIDTH; i++) for(j=0; j<BOARD_HEIGHT; j++)
   if(Explode(board, fromX, fromY, toX, toY)) { // mark as damaged
     int i,j;
     for(i=0; i<BOARD_WIDTH; i++) for(j=0; j<BOARD_HEIGHT; j++)
-      if((i-toX)*(i-toX) + (j-toY)*(j-toY) < 6) damage[0][j][i] = True;
+      if((i-toX)*(i-toX) + (j-toY)*(j-toY) < 6) damage[0][j][i] |=  1 + ((i-toX ^ j-toY) & 1);
   }
 
   /* Be sure end square is redrawn */
   }
 
   /* Be sure end square is redrawn */
-  damage[0][toY][toX] = True;
+  damage[0][toY][toX] |= True;
 }
 
 void
 }
 
 void
diff --git a/draw.c b/draw.c
index b838c3b..5af4918 100644 (file)
--- a/draw.c
+++ b/draw.c
@@ -655,6 +655,7 @@ void
 DrawDot (int marker, int x, int y, int r)
 { // used for atomic captures; no need to draw on backup
   DoDrawDot(csBoardWindow, marker, x, y, r);
 DrawDot (int marker, int x, int y, int r)
 { // used for atomic captures; no need to draw on backup
   DoDrawDot(csBoardWindow, marker, x, y, r);
+  GraphExpose(currBoard, x-r, y-r, 2*r, 2*r);
 }
 
 void
 }
 
 void