diff options
| author | Jacob Nevins <jacobn@chiark.greenend.org.uk> | 2005-07-05 21:27:19 +0000 |
|---|---|---|
| committer | Jacob Nevins <jacobn@chiark.greenend.org.uk> | 2005-07-05 21:27:19 +0000 |
| commit | f3c95109c7b905f74b5f149eea21f68444c31ef7 (patch) | |
| tree | 77e7eeb6b297b201bbd40f67010318d2c4421c85 /pegs.c | |
| parent | 968828283b7a0aacd71d4868846291b381884eb1 (diff) | |
| download | puzzles-f3c95109c7b905f74b5f149eea21f68444c31ef7.zip puzzles-f3c95109c7b905f74b5f149eea21f68444c31ef7.tar.gz puzzles-f3c95109c7b905f74b5f149eea21f68444c31ef7.tar.bz2 puzzles-f3c95109c7b905f74b5f149eea21f68444c31ef7.tar.xz | |
Add a `full' parameter to validate_params(), analogous to the one in
encode_params(). This is necessary for cases where generation-time parameters
that are normally omitted from descriptive IDs can place restrictions on other
parameters; in particular, when the default value of a relevant generation-time
parameter is not the one used to generate the descriptive ID, validation could
reject self-generated IDs (e.g., Net `5x2w:56182ae7c2', and some cases in
`Pegs').
[originally from svn r6068]
Diffstat (limited to 'pegs.c')
| -rw-r--r-- | pegs.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -120,6 +120,11 @@ static void decode_params(game_params *params, char const *string) params->h = params->w; } + /* + * Assume a random generation scheme unless told otherwise, for the + * sake of internal consistency. + */ + params->type = TYPE_RANDOM; for (i = 0; i < lenof(pegs_lowertypes); i++) if (!strcmp(p, pegs_lowertypes[i])) params->type = i; @@ -178,9 +183,9 @@ static game_params *custom_params(config_item *cfg) return ret; } -static char *validate_params(game_params *params) +static char *validate_params(game_params *params, int full) { - if (params->w <= 3 || params->h <= 3) + if (full && (params->w <= 3 || params->h <= 3)) return "Width and height must both be greater than three"; /* @@ -189,7 +194,7 @@ static char *validate_params(game_params *params) * soluble. For the moment, therefore, I'm going to disallow * them at any size other than the standard one. */ - if (params->type == TYPE_CROSS || params->type == TYPE_OCTAGON) { + if (full && (params->type == TYPE_CROSS || params->type == TYPE_OCTAGON)) { if (params->w != 7 || params->h != 7) return "This board type is only supported at 7x7"; } |