diff options
| -rw-r--r-- | cube.c | 2 | ||||
| -rw-r--r-- | fifteen.c | 2 | ||||
| -rw-r--r-- | gtk.c | 2 | ||||
| -rw-r--r-- | midend.c | 6 | ||||
| -rw-r--r-- | mines.c | 37 | ||||
| -rw-r--r-- | net.c | 2 | ||||
| -rw-r--r-- | netslide.c | 2 | ||||
| -rw-r--r-- | nullgame.c | 2 | ||||
| -rw-r--r-- | pattern.c | 2 | ||||
| -rw-r--r-- | puzzles.h | 2 | ||||
| -rw-r--r-- | rect.c | 2 | ||||
| -rw-r--r-- | sixteen.c | 2 | ||||
| -rw-r--r-- | solo.c | 2 | ||||
| -rw-r--r-- | twiddle.c | 2 |
14 files changed, 37 insertions, 30 deletions
@@ -586,7 +586,7 @@ static void classify_grid_square_callback(void *ctx, struct grid_square *sq) } static char *new_game_desc(game_params *params, random_state *rs, - game_aux_info **aux) + game_aux_info **aux, int interactive) { struct grid_data data; int i, j, k, m, area, facesperclass; @@ -151,7 +151,7 @@ static int perm_parity(int *perm, int n) } static char *new_game_desc(game_params *params, random_state *rs, - game_aux_info **aux) + game_aux_info **aux, int interactive) { int gap, n, i, x; int x1, x2, p1, p2, parity; @@ -1307,7 +1307,7 @@ int main(int argc, char **argv) while (n-- > 0) { game_aux_info *aux = NULL; - char *desc = thegame.new_desc(par, rs, &aux); + char *desc = thegame.new_desc(par, rs, &aux, FALSE); printf("%s:%s\n", parstr, desc); sfree(desc); if (aux) @@ -178,7 +178,8 @@ void midend_new_game(midend_data *me) me->aux_info = NULL; rs = random_init(me->seedstr, strlen(me->seedstr)); - me->desc = me->ourgame->new_desc(me->curparams, rs, &me->aux_info); + me->desc = me->ourgame->new_desc(me->curparams, rs, + &me->aux_info, TRUE); random_free(rs); } @@ -521,7 +522,8 @@ float *midend_colours(midend_data *me, int *ncolours) if (me->nstates == 0) { game_aux_info *aux = NULL; - char *desc = me->ourgame->new_desc(me->params, me->random, &aux); + char *desc = me->ourgame->new_desc(me->params, me->random, + &aux, TRUE); state = me->ourgame->new_game(me, me->params, desc); sfree(desc); if (aux) @@ -1847,24 +1847,29 @@ static char *new_mine_layout(int w, int h, int n, int x, int y, int unique, } static char *new_game_desc(game_params *params, random_state *rs, - game_aux_info **aux) + game_aux_info **aux, int interactive) { -#ifdef PREOPENED - int x = random_upto(rs, params->w); - int y = random_upto(rs, params->h); - char *grid, *desc; - - grid = new_mine_layout(params->w, params->h, params->n, - x, y, params->unique, rs); -#else - char *rsdesc, *desc; + if (!interactive) { + /* + * For batch-generated grids, pre-open one square. + */ + int x = random_upto(rs, params->w); + int y = random_upto(rs, params->h); + char *grid, *desc; + + grid = new_mine_layout(params->w, params->h, params->n, + x, y, params->unique, rs, &desc); + sfree(grid); + return desc; + } else { + char *rsdesc, *desc; - rsdesc = random_state_encode(rs); - desc = snewn(strlen(rsdesc) + 100, char); - sprintf(desc, "r%d,%c,%s", params->n, params->unique ? 'u' : 'a', rsdesc); - sfree(rsdesc); - return desc; -#endif + rsdesc = random_state_encode(rs); + desc = snewn(strlen(rsdesc) + 100, char); + sprintf(desc, "r%d,%c,%s", params->n, params->unique ? 'u' : 'a', rsdesc); + sfree(rsdesc); + return desc; + } } static void game_free_aux_info(game_aux_info *aux) @@ -1146,7 +1146,7 @@ static void perturb(int w, int h, unsigned char *tiles, int wrapping, } static char *new_game_desc(game_params *params, random_state *rs, - game_aux_info **aux) + game_aux_info **aux, int interactive) { tree234 *possibilities, *barriertree; int w, h, x, y, cx, cy, nbarriers; @@ -334,7 +334,7 @@ static char *validate_params(game_params *params) */ static char *new_game_desc(game_params *params, random_state *rs, - game_aux_info **aux) + game_aux_info **aux, int interactive) { tree234 *possibilities, *barriertree; int w, h, x, y, cx, cy, nbarriers; @@ -84,7 +84,7 @@ static char *validate_params(game_params *params) } static char *new_game_desc(game_params *params, random_state *rs, - game_aux_info **aux) + game_aux_info **aux, int interactive) { return dupstr("FIXME"); } @@ -475,7 +475,7 @@ struct game_aux_info { }; static char *new_game_desc(game_params *params, random_state *rs, - game_aux_info **aux) + game_aux_info **aux, int interactive) { unsigned char *grid; int i, j, max, rowlen, *rowdata; @@ -214,7 +214,7 @@ struct game { game_params *(*custom_params)(config_item *cfg); char *(*validate_params)(game_params *params); char *(*new_desc)(game_params *params, random_state *rs, - game_aux_info **aux); + game_aux_info **aux, int interactive); void (*free_aux_info)(game_aux_info *aux); char *(*validate_desc)(game_params *params, char *desc); game_state *(*new_game)(midend_data *me, game_params *params, char *desc); @@ -1054,7 +1054,7 @@ struct game_aux_info { }; static char *new_game_desc(game_params *params, random_state *rs, - game_aux_info **aux) + game_aux_info **aux, int interactive) { int *grid, *numbers = NULL; struct rectlist *list; @@ -194,7 +194,7 @@ static int perm_parity(int *perm, int n) } static char *new_game_desc(game_params *params, random_state *rs, - game_aux_info **aux) + game_aux_info **aux, int interactive) { int stop, n, i, x; int x1, x2, p1, p2; @@ -1397,7 +1397,7 @@ struct game_aux_info { }; static char *new_game_desc(game_params *params, random_state *rs, - game_aux_info **aux) + game_aux_info **aux, int interactive) { int c = params->c, r = params->r, cr = c*r; int area = cr*cr; @@ -308,7 +308,7 @@ static int grid_complete(int *grid, int wh, int orientable) } static char *new_game_desc(game_params *params, random_state *rs, - game_aux_info **aux) + game_aux_info **aux, int interactive) { int *grid; int w = params->w, h = params->h, n = params->n, wh = w*h; |