aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cube.c2
-rw-r--r--fifteen.c2
-rw-r--r--gtk.c2
-rw-r--r--midend.c6
-rw-r--r--mines.c37
-rw-r--r--net.c2
-rw-r--r--netslide.c2
-rw-r--r--nullgame.c2
-rw-r--r--pattern.c2
-rw-r--r--puzzles.h2
-rw-r--r--rect.c2
-rw-r--r--sixteen.c2
-rw-r--r--solo.c2
-rw-r--r--twiddle.c2
14 files changed, 37 insertions, 30 deletions
diff --git a/cube.c b/cube.c
index a65b918..2bce1bd 100644
--- a/cube.c
+++ b/cube.c
@@ -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;
diff --git a/fifteen.c b/fifteen.c
index bbdb939..e7a41ef 100644
--- a/fifteen.c
+++ b/fifteen.c
@@ -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;
diff --git a/gtk.c b/gtk.c
index 84e5e72..645b250 100644
--- a/gtk.c
+++ b/gtk.c
@@ -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)
diff --git a/midend.c b/midend.c
index 8adc1c3..e8bcd20 100644
--- a/midend.c
+++ b/midend.c
@@ -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)
diff --git a/mines.c b/mines.c
index 7f7d316..38d31f9 100644
--- a/mines.c
+++ b/mines.c
@@ -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)
diff --git a/net.c b/net.c
index fa4c979..a2204c0 100644
--- a/net.c
+++ b/net.c
@@ -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;
diff --git a/netslide.c b/netslide.c
index bf5fc75..324946e 100644
--- a/netslide.c
+++ b/netslide.c
@@ -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;
diff --git a/nullgame.c b/nullgame.c
index abb6cc5..3ec6b75 100644
--- a/nullgame.c
+++ b/nullgame.c
@@ -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");
}
diff --git a/pattern.c b/pattern.c
index c5fd9dc..419e4aa 100644
--- a/pattern.c
+++ b/pattern.c
@@ -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;
diff --git a/puzzles.h b/puzzles.h
index f3db36f..4ee718e 100644
--- a/puzzles.h
+++ b/puzzles.h
@@ -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);
diff --git a/rect.c b/rect.c
index 0ea0b8c..c1eaa2c 100644
--- a/rect.c
+++ b/rect.c
@@ -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;
diff --git a/sixteen.c b/sixteen.c
index 1871e5f..fe3e8d1 100644
--- a/sixteen.c
+++ b/sixteen.c
@@ -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;
diff --git a/solo.c b/solo.c
index addae60..168551c 100644
--- a/solo.c
+++ b/solo.c
@@ -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;
diff --git a/twiddle.c b/twiddle.c
index 2523920..f6c8f4d 100644
--- a/twiddle.c
+++ b/twiddle.c
@@ -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;