~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Forgot to set 'has_incentre' on triangular grids, which don't use
[sgt/puzzles]
/
unequal.c
diff --git
a/unequal.c
b/unequal.c
index
7ea0349
..
099f0f8
100644
(file)
--- a/
unequal.c
+++ b/
unequal.c
@@
-98,10
+98,9
@@
struct game_state {
#define TITLE(upper,title,func,lower) #title,
#define ENCODE(upper,title,func,lower) #lower
#define CONFIG(upper,title,func,lower) ":" #title
#define TITLE(upper,title,func,lower) #title,
#define ENCODE(upper,title,func,lower) #lower
#define CONFIG(upper,title,func,lower) ":" #title
-enum { DIFFLIST(ENUM) DIFF_IMPOSSIBLE = diff_impossible, DIFF_AMBIGUOUS = diff_ambiguous, DIFF_UNFINISHED = diff_unfinished };
+enum { DIFFLIST(ENUM) DIFF
COUNT, DIFF
_IMPOSSIBLE = diff_impossible, DIFF_AMBIGUOUS = diff_ambiguous, DIFF_UNFINISHED = diff_unfinished };
static char const *const unequal_diffnames[] = { DIFFLIST(TITLE) };
static char const unequal_diffchars[] = DIFFLIST(ENCODE);
static char const *const unequal_diffnames[] = { DIFFLIST(TITLE) };
static char const unequal_diffchars[] = DIFFLIST(ENCODE);
-#define DIFFCOUNT lenof(unequal_diffchars)
#define DIFFCONFIG DIFFLIST(CONFIG)
#define DEFAULT_PRESET 0
#define DIFFCONFIG DIFFLIST(CONFIG)
#define DEFAULT_PRESET 0
@@
-1310,7
+1309,7
@@
static char *solve_game(game_state *state, game_state *currstate,
if (!(solved->flags[r] & F_IMMUTABLE))
solved->nums[r] = 0;
}
if (!(solved->flags[r] & F_IMMUTABLE))
solved->nums[r] = 0;
}
- r = solver_state(solved, DIFFCOUNT
);
+ r = solver_state(solved, DIFFCOUNT
-1); /* always use full solver */
if (r > 0) ret = latin_desc(solved->nums, solved->order);
free_game(solved);
return ret;
if (r > 0) ret = latin_desc(solved->nums, solved->order);
free_game(solved);
return ret;
@@
-1627,21
+1626,25
@@
static void draw_gts(drawing *dr, game_drawstate *ds, int ox, int oy,
/* Draw all the greater-than signs emanating from this tile. */
if (f & F_ADJ_UP) {
/* Draw all the greater-than signs emanating from this tile. */
if (f & F_ADJ_UP) {
+ draw_rect(dr, ox, oy - g, TILE_SIZE, g, COL_BACKGROUND);
draw_gt(dr, ox+g2, oy-g4, g2, -g2, g2, g2,
(f & F_ERROR_UP) ? COL_ERROR : col);
draw_update(dr, ox, oy-g, TILE_SIZE, g);
}
if (f & F_ADJ_RIGHT) {
draw_gt(dr, ox+g2, oy-g4, g2, -g2, g2, g2,
(f & F_ERROR_UP) ? COL_ERROR : col);
draw_update(dr, ox, oy-g, TILE_SIZE, g);
}
if (f & F_ADJ_RIGHT) {
+ draw_rect(dr, ox + TILE_SIZE, oy, g, TILE_SIZE, COL_BACKGROUND);
draw_gt(dr, ox+TILE_SIZE+g4, oy+g2, g2, g2, -g2, g2,
(f & F_ERROR_RIGHT) ? COL_ERROR : col);
draw_update(dr, ox+TILE_SIZE, oy, g, TILE_SIZE);
}
if (f & F_ADJ_DOWN) {
draw_gt(dr, ox+TILE_SIZE+g4, oy+g2, g2, g2, -g2, g2,
(f & F_ERROR_RIGHT) ? COL_ERROR : col);
draw_update(dr, ox+TILE_SIZE, oy, g, TILE_SIZE);
}
if (f & F_ADJ_DOWN) {
+ draw_rect(dr, ox, oy + TILE_SIZE, TILE_SIZE, g, COL_BACKGROUND);
draw_gt(dr, ox+g2, oy+TILE_SIZE+g4, g2, g2, g2, -g2,
(f & F_ERROR_DOWN) ? COL_ERROR : col);
draw_update(dr, ox, oy+TILE_SIZE, TILE_SIZE, g);
}
if (f & F_ADJ_LEFT) {
draw_gt(dr, ox+g2, oy+TILE_SIZE+g4, g2, g2, g2, -g2,
(f & F_ERROR_DOWN) ? COL_ERROR : col);
draw_update(dr, ox, oy+TILE_SIZE, TILE_SIZE, g);
}
if (f & F_ADJ_LEFT) {
+ draw_rect(dr, ox - g, oy, g, TILE_SIZE, COL_BACKGROUND);
draw_gt(dr, ox-g4, oy+g2, -g2, g2, g2, g2,
(f & F_ERROR_LEFT) ? COL_ERROR : col);
draw_update(dr, ox-g, oy, g, TILE_SIZE);
draw_gt(dr, ox-g4, oy+g2, -g2, g2, g2, g2,
(f & F_ERROR_LEFT) ? COL_ERROR : col);
draw_update(dr, ox-g, oy, g, TILE_SIZE);
@@
-1861,6
+1864,11
@@
static float game_flash_length(game_state *oldstate, game_state *newstate,
return 0.0F;
}
return 0.0F;
}
+static int game_is_solved(game_state *state)
+{
+ return state->completed;
+}
+
static int game_timing_state(game_state *state, game_ui *ui)
{
return TRUE;
static int game_timing_state(game_state *state, game_ui *ui)
{
return TRUE;
@@
-1902,7
+1910,7
@@
static void game_print(drawing *dr, game_state *state, int tilesize)
FONT_VARIABLE, TILE_SIZE/2, ALIGN_VCENTRE | ALIGN_HCENTRE,
ink, str);
FONT_VARIABLE, TILE_SIZE/2, ALIGN_VCENTRE | ALIGN_HCENTRE,
ink, str);
- if (
ds
->adjacent)
+ if (
state
->adjacent)
draw_adjs(dr, ds, ox, oy, GRID(state, flags, x, y), ink);
else
draw_gts(dr, ds, ox, oy, GRID(state, flags, x, y), ink);
draw_adjs(dr, ds, ox, oy, GRID(state, flags, x, y), ink);
else
draw_gts(dr, ds, ox, oy, GRID(state, flags, x, y), ink);
@@
-1949,6
+1957,7
@@
const struct game thegame = {
game_redraw,
game_anim_length,
game_flash_length,
game_redraw,
game_anim_length,
game_flash_length,
+ game_is_solved,
TRUE, FALSE, game_print_size, game_print,
FALSE, /* wants_statusbar */
FALSE, game_timing_state,
TRUE, FALSE, game_print_size, game_print,
FALSE, /* wants_statusbar */
FALSE, game_timing_state,