return ret;
}
-static char *validate_params(game_params *params)
+static char *validate_params(game_params *params, int full)
{
if (params->ncolours < 2 || params->npegs < 2)
return "Trivial solutions are uninteresting";
for (i = 0; i < from->solution->npegs; i++) {
int val = atoi(p);
- if (val <= 0 || val > from->params.ncolours) {
+ int min_colour = from->params.allow_blank? 0 : 1;
+ if (val < min_colour || val > from->params.ncolours) {
free_game(ret);
return NULL;
}
static void game_set_size(game_drawstate *ds, game_params *params,
int tilesize)
{
- int colh, guessh, x, y;
+ int colh, guessh;
ds->pegsz = tilesize;
guessh = ((ds->pegsz + ds->gapsz) * params->nguesses); /* guesses */
guessh += ds->gapsz + ds->pegsz; /* solution */
- game_compute_size(params, tilesize, &x, &y);
+ game_compute_size(params, tilesize, &ds->w, &ds->h);
ds->colx = ds->border;
- ds->coly = (y - colh) / 2;
+ ds->coly = (ds->h - colh) / 2;
ds->guessx = ds->solnx = ds->border + ds->pegsz * 2; /* border + colours */
- ds->guessy = (y - guessh) / 2;
+ ds->guessy = (ds->h - guessh) / 2;
ds->solny = ds->guessy + ((ds->pegsz + ds->gapsz) * params->nguesses) + ds->gapsz;
assert(ds->pegsz > 0);
return FALSE;
}
-static int game_timing_state(game_state *state)
+static int game_timing_state(game_state *state, game_ui *ui)
{
return TRUE;
}