X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/4496362fadb5f60b8ecf431fb220d26df7280f99..4497b8419960a996e4fed08d2e146701d603247b:/midend.c diff --git a/midend.c b/midend.c index 0c8b3c0..00b187d 100644 --- a/midend.c +++ b/midend.c @@ -106,6 +106,22 @@ midend *midend_new(frontend *fe, const game *ourgame, me->nstates = me->statesize = me->statepos = 0; me->states = NULL; me->params = ourgame->default_params(); + /* + * Allow environment-based changing of the default settings by + * defining a variable along the lines of `NET_DEFAULT=25x25w' + * in which the value is an encoded parameter string. + */ + { + char buf[80], *e; + int j, k; + sprintf(buf, "%s_DEFAULT", me->ourgame->name); + for (j = k = 0; buf[j]; j++) + if (!isspace((unsigned char)buf[j])) + buf[k++] = toupper((unsigned char)buf[j]); + buf[k] = '\0'; + if ((e = getenv(buf)) != NULL) + me->ourgame->decode_params(me->params, e); + } me->curparams = NULL; me->desc = me->privdesc = NULL; me->seedstr = NULL; @@ -1331,12 +1347,13 @@ char *midend_solve(midend *me) me->anim_time = 0.0; midend_finish_move(me); } - midend_redraw(me); + if (me->drawing) + midend_redraw(me); midend_set_timer(me); return NULL; } -int midend_is_solved(midend *me) +int midend_status(midend *me) { /* * We should probably never be called when the state stack has no @@ -1347,8 +1364,10 @@ int midend_is_solved(midend *me) * practically, a user whose midend has been left in that state * probably _does_ want the 'new game' option to be prominent. */ - return (me->statepos == 0 || - me->ourgame->is_solved(me->states[me->statepos-1].state)); + if (me->statepos == 0) + return +1; + + return me->ourgame->status(me->states[me->statepos-1].state); } char *midend_rewrite_statusbar(midend *me, char *text)