(x - ox >= 0 && x - ox < TILESIZE &&
y - oy >= 0 && y - oy < TILESIZE) ||
/* in triangle between top-left corners? */
- (ox > bx && x >= bx && x <= ox &&
+ (ox > bx && x >= bx && x <= ox && y <= by &&
(by-y) * (ox-bx) <= (by-oy) * (x-bx)) ||
/* in triangle between bottom-right corners? */
(ox > bx && x >= bx+TILESIZE && x <= ox+TILESIZE &&
+ y >= oy+TILESIZE &&
(by-y+TILESIZE)*(ox-bx) >= (by-oy)*(x-bx-TILESIZE))) {
tx = cx;
ty = cy;
int x, int y, long tile)
{
int w = clues->w /* , a = w*w */;
- int tx, ty;
+ int tx, ty, bg;
char str[64];
tx = COORD(x);
ty = COORD(y);
+ bg = (tile & DF_HIGHLIGHT) ? COL_HIGHLIGHT : COL_BACKGROUND;
+
/* draw tower */
if (ds->three_d && (tile & DF_PLAYAREA) && (tile & DF_DIGIT_MASK)) {
int coords[8];
coords[5] = coords[3] - yoff;
coords[6] = coords[0] + xoff;
coords[7] = coords[1] - yoff;
- draw_polygon(dr, coords, 4, COL_BACKGROUND, COL_GRID);
+ draw_polygon(dr, coords, 4, bg, COL_GRID);
/* bottom face of tower */
coords[0] = tx + TILESIZE;
coords[5] = coords[3] - yoff;
coords[6] = coords[0] + xoff;
coords[7] = coords[1] - yoff;
- draw_polygon(dr, coords, 4, COL_BACKGROUND, COL_GRID);
+ draw_polygon(dr, coords, 4, bg, COL_GRID);
/* now offset all subsequent drawing to the top of the tower */
tx += xoff;
}
/* erase background */
- draw_rect(dr, tx, ty, TILESIZE, TILESIZE,
- (tile & DF_HIGHLIGHT) ? COL_HIGHLIGHT : COL_BACKGROUND);
+ draw_rect(dr, tx, ty, TILESIZE, TILESIZE, bg);
/* pencil-mode highlight */
if (tile & DF_HIGHLIGHT_PENCIL) {