~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed decoding bug for dual grids
[sgt/puzzles]
/
loopy.c
diff --git
a/loopy.c
b/loopy.c
index
45f0a4a
..
2173dcd
100644
(file)
--- a/
loopy.c
+++ b/
loopy.c
@@
-557,6
+557,7
@@
static void free_params(game_params *params)
static void decode_params(game_params *params, char const *string)
{
static void decode_params(game_params *params, char const *string)
{
+ debug(("Decoding params '%s'\n",string));
params->h = params->w = atoi(string);
params->diff = DIFF_EASY;
params->dual = 0;
params->h = params->w = atoi(string);
params->diff = DIFF_EASY;
params->dual = 0;
@@
-566,15
+567,15
@@
static void decode_params(game_params *params, char const *string)
params->h = atoi(string);
while (*string && isdigit((unsigned char)*string)) string++;
}
params->h = atoi(string);
while (*string && isdigit((unsigned char)*string)) string++;
}
- if (*string == 'l') {
- string++;
- params->dual = 1;
- }
if (*string == 't') {
string++;
params->type = atoi(string);
while (*string && isdigit((unsigned char)*string)) string++;
}
if (*string == 't') {
string++;
params->type = atoi(string);
while (*string && isdigit((unsigned char)*string)) string++;
}
+ if (*string == 'l') {
+ string++;
+ params->dual = 1;
+ }
if (*string == 'd') {
int i;
string++;
if (*string == 'd') {
int i;
string++;
@@
-592,6
+593,7
@@
static char *encode_params(game_params *params, int full)
params->dual ? "l" : "");
if (full)
sprintf(str + strlen(str), "d%c", diffchars[params->diff]);
params->dual ? "l" : "");
if (full)
sprintf(str + strlen(str), "d%c", diffchars[params->diff]);
+ debug(("Encoded to '%s'\n",str));
return dupstr(str);
}
return dupstr(str);
}
@@
-746,6
+748,9
@@
static char *validate_desc(game_params *params, char *desc)
g = loopy_generate_grid(params, grid_desc);
if (grid_desc) sfree(grid_desc);
g = loopy_generate_grid(params, grid_desc);
if (grid_desc) sfree(grid_desc);
+ debug(("Validating '%s' type %d %dx%d dual: %d\n",
+ desc, params->type, params->w, params->h, params->dual));
+
for (; *desc; ++desc) {
if ((*desc >= '0' && *desc <= '9') || (*desc >= 'A' && *desc <= 'Z')) {
count++;
for (; *desc; ++desc) {
if ((*desc >= '0' && *desc <= '9') || (*desc >= 'A' && *desc <= 'Z')) {
count++;