X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/1f3ee4ee0f9443910671f5e57837fa5311000b21..c5aa0b02c19bfd6e717837c0ae0b912456e47622:/midend.c diff --git a/midend.c b/midend.c index b5efda6..7ef05cb 100644 --- a/midend.c +++ b/midend.c @@ -381,7 +381,7 @@ static void midend_finish_move(midend_data *me) void midend_stop_anim(midend_data *me) { - if (me->oldstate || me->anim_time) { + if (me->oldstate || me->anim_time != 0) { midend_finish_move(me); midend_redraw(me); } @@ -789,7 +789,7 @@ int midend_num_presets(midend_data *me) preset = me->ourgame->default_params(); me->ourgame->decode_params(preset, val); - if (me->ourgame->validate_params(preset)) { + if (me->ourgame->validate_params(preset, TRUE)) { /* Drop this one from the list. */ me->ourgame->free_params(preset); continue; @@ -955,7 +955,7 @@ static char *midend_game_id_int(midend_data *me, char *id, int defmode) if (par) { newcurparams = me->ourgame->dup_params(me->params); me->ourgame->decode_params(newcurparams, par); - error = me->ourgame->validate_params(newcurparams); + error = me->ourgame->validate_params(newcurparams, desc == NULL); if (error) { me->ourgame->free_params(newcurparams); return error; @@ -1046,7 +1046,7 @@ char *midend_set_config(midend_data *me, int which, config_item *cfg) switch (which) { case CFG_SETTINGS: params = me->ourgame->custom_params(cfg); - error = me->ourgame->validate_params(params); + error = me->ourgame->validate_params(params, TRUE); if (error) { me->ourgame->free_params(params); @@ -1480,16 +1480,24 @@ char *midend_deserialise(midend_data *me, params = me->ourgame->default_params(); me->ourgame->decode_params(params, parstr); - if (me->ourgame->validate_params(params)) { + if (me->ourgame->validate_params(params, TRUE)) { ret = "Long-term parameters in save file are invalid"; goto cleanup; } cparams = me->ourgame->default_params(); me->ourgame->decode_params(cparams, cparstr); - if (me->ourgame->validate_params(cparams)) { + if (me->ourgame->validate_params(cparams, FALSE)) { ret = "Short-term parameters in save file are invalid"; goto cleanup; } + if (seed && me->ourgame->validate_params(cparams, TRUE)) { + /* + * The seed's no use with this version, but we can perfectly + * well use the rest of the data. + */ + sfree(seed); + seed = NULL; + } if (!desc) { ret = "Game description in save file is missing"; goto cleanup;