X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/5d6421f7727fb367981ad5a1dfba5e17207e1e4e..ca2e15e21765c97b56bd971198c3b93866fe82f1:/towers.c diff --git a/towers.c b/towers.c index f06f2ad..e29da01 100644 --- a/towers.c +++ b/towers.c @@ -1290,10 +1290,11 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds, (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; @@ -1524,12 +1525,14 @@ static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues, 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]; @@ -1545,7 +1548,7 @@ static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues, 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; @@ -1556,7 +1559,7 @@ static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues, 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; @@ -1564,8 +1567,7 @@ static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues, } /* 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) {