/* Mark this square as needing to be redrawn. Note that
we don't remove the piece though, since logically (ie
as seen by opponent) the move hasn't been made yet. */
- damage[0][boardY][boardX] = True;
+ damage[0][boardY][boardX] |= True;
} else {
anims[Player].dragActive = False;
}
DrawOneSquare(anims[Player].startSquare.x, anims[Player].startSquare.y,
EmptySquare, anims[Player].startColor, 0, NULL, NULL, 0);
AnimationFrame(Player, &anims[Player].prevFrame, anims[Player].dragPiece);
- damage[0][anims[Player].startBoardY][anims[Player].startBoardX] = TRUE;
+ damage[0][anims[Player].startBoardY][anims[Player].startBoardX] |= TRUE;
}
static void
DrawSquare(i, j, board[i][j], 0);
if(lineGap && damage[nr][i][j] & 2) {
drawHighlight(j, i, 0);
- SquareExpose(i, j, 1);
+ SquareExpose(i, j, lineGap);
} else SquareExpose(i, j, 0);
damage[nr][i][j] = 0;
}
SquareExpose(i, j, lineGap);
else
SquareExpose(i, j, 0);
- damage[nr][i][j] = 0;
+ if(nr == 0) damage[nr][i][j] = 0; // on auxiliary board we retain arrow damage
}
}
else {
TimeMark now;
GetTimeMark(&now);
- if(SubtractTimeMarks(&now, &programStartTime) < 1000) {
- DrawSeekBackground(2*squareSize, 3*squareSize, 6*squareSize, 5*squareSize);
- DrawText("Right-clicking dialog texts", 2*squareSize + 5, 3*squareSize + 5, 2);
- DrawText("pops up help on them", 2*squareSize + 5, (int) (3.3*squareSize) + 5, 2);
+ if(repaint && SubtractTimeMarks(&now, &programStartTime) < 1000) {
+ char *p = appData.message, *q;
+ i = 0;
+ while(*p) {
+ q = strchr(p, '\n');
+ if(q) *q = NULLCHAR;
+ if(!strstr(appData.suppress, p)) {
+ if(i == 0) DrawSeekBackground(2*squareSize, 3*squareSize, 6*squareSize, 5*squareSize);
+ DrawText(p, 2*squareSize + 5, (int) ((3 + 0.3*i++)*squareSize) + 5, 2);
+ }
+ if(q) *q++ = '\n'; else q = "";
+ p = q;
+ }
GraphExpose(currBoard, 2*squareSize, 3*squareSize, 4*squareSize, 2*squareSize);
messedUp = TRUE;
} else messedUp = FALSE;