const game *ourgame;
char *seed;
+ game_aux_info *aux_info;
int fresh_seed;
int nstates, statesize, statepos;
me->states = NULL;
me->params = ourgame->default_params();
me->seed = NULL;
+ me->aux_info = NULL;
me->fresh_seed = FALSE;
me->drawstate = NULL;
me->oldstate = NULL;
{
sfree(me->states);
sfree(me->seed);
+ if (me->aux_info)
+ me->ourgame->free_aux_info(me->aux_info);
me->ourgame->free_params(me->params);
sfree(me);
}
if (!me->fresh_seed) {
sfree(me->seed);
- me->seed = me->ourgame->new_seed(me->params, me->random);
+ if (me->aux_info)
+ me->ourgame->free_aux_info(me->aux_info);
+ me->aux_info = NULL;
+ me->seed = me->ourgame->new_seed(me->params, me->random,
+ &me->aux_info);
} else
me->fresh_seed = FALSE;
float *ret;
if (me->nstates == 0) {
- char *seed = me->ourgame->new_seed(me->params, me->random);
+ game_aux_info *aux = NULL;
+ char *seed = me->ourgame->new_seed(me->params, me->random, &aux);
state = me->ourgame->new_game(me->params, seed);
sfree(seed);
+ if (aux)
+ me->ourgame->free_aux_info(aux);
} else
state = me->states[0];
sfree(me->seed);
me->seed = dupstr(seed);
me->fresh_seed = TRUE;
+ if (me->aux_info)
+ me->ourgame->free_aux_info(me->aux_info);
+ me->aux_info = NULL;
}
return NULL;
return NULL;
}
+
+char *midend_text_format(midend_data *me)
+{
+ if (me->ourgame->can_format_as_text && me->statepos > 0)
+ return me->ourgame->text_format(me->states[me->statepos-1]);
+ else
+ return NULL;
+}