X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=board.c;h=f2b06435308f096171035bfd433a0684d40b814d;hb=e946eab7f34bda5aa1bb329d23490a0d724f1ce1;hp=5916d45a8c72f4a57bb670afe3a27c6ecff4c676;hpb=4011e8678d85310eedf19fd00aa5d96a9a60770a;p=xboard.git diff --git a/board.c b/board.c index 5916d45..f2b0643 100644 --- a/board.c +++ b/board.c @@ -670,6 +670,7 @@ ChangeDragPiece (ChessSquare piece) { anims[Player].dragPiece = piece; SetDragPiece(Player, piece); + damage[0][fromY][fromX] = True; } void @@ -1189,10 +1190,10 @@ ArrowDamage (int s_col, int s_row, int d_col, int d_row) int hor, vert, i, n = partnerUp * twoBoards; hor = 64*s_col + 32; vert = 64*s_row + 32; for(i=0; i<= 64; i++) { - damage[n][vert+6>>6][hor+6>>6] |= 2; - damage[n][vert-6>>6][hor+6>>6] |= 2; - damage[n][vert+6>>6][hor-6>>6] |= 2; - damage[n][vert-6>>6][hor-6>>6] |= 2; + damage[n][vert+8>>6][hor+8>>6] |= 2; + damage[n][vert-8>>6][hor+8>>6] |= 2; + damage[n][vert+8>>6][hor-8>>6] |= 2; + damage[n][vert-8>>6][hor-8>>6] |= 2; hor += d_col - s_col; vert += d_row - s_row; } } @@ -1211,20 +1212,20 @@ DrawArrowBetweenSquares (int s_col, int s_row, int d_col, int d_row) SquareToPos( s_row, s_col, &s_x, &s_y); SquareToPos( d_row, d_col, &d_x, &d_y); - if( d_y > s_y ) { + if( d_y > s_y && d_y - s_y > abs(d_x - s_x)/2) { d_y += squareSize / 2 - squareSize / 4; // [HGM] round towards same centers on all sides! } - else if( d_y < s_y ) { + else if( d_y < s_y && s_y - d_y > abs(d_x - d_y)/2) { d_y += squareSize / 2 + squareSize / 4; } else { d_y += squareSize / 2; } - if( d_x > s_x ) { + if( d_x > s_x && d_x - s_x > abs(d_y - s_y)/2) { d_x += squareSize / 2 - squareSize / 4; } - else if( d_x < s_x ) { + else if( d_x < s_x && s_x - d_x > abs(d_y - s_y)/2) { d_x += squareSize / 2 + squareSize / 4; } else {