diff options
| author | Simon Tatham <anakin@pobox.com> | 2005-06-17 18:54:58 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2005-06-17 18:54:58 +0000 |
| commit | f01f82105e5feb2586a2ca257947d76e9b982d04 (patch) | |
| tree | f1a99cc46e8a333c750616969d740dd540f0f44b | |
| parent | 32111ef901daba8b9168736f9a52bec8f6e95c98 (diff) | |
| download | puzzles-f01f82105e5feb2586a2ca257947d76e9b982d04.zip puzzles-f01f82105e5feb2586a2ca257947d76e9b982d04.tar.gz puzzles-f01f82105e5feb2586a2ca257947d76e9b982d04.tar.bz2 puzzles-f01f82105e5feb2586a2ca257947d76e9b982d04.tar.xz | |
Infrastructure change which I've been thinking about for a while:
the back end function solve_game() now takes the _current_
game_state in addition to the initial one.
[originally from svn r5969]
| -rw-r--r-- | cube.c | 4 | ||||
| -rw-r--r-- | fifteen.c | 4 | ||||
| -rw-r--r-- | flip.c | 4 | ||||
| -rw-r--r-- | midend.c | 4 | ||||
| -rw-r--r-- | mines.c | 4 | ||||
| -rw-r--r-- | net.c | 4 | ||||
| -rw-r--r-- | netslide.c | 4 | ||||
| -rw-r--r-- | nullgame.c | 4 | ||||
| -rw-r--r-- | pattern.c | 4 | ||||
| -rw-r--r-- | puzzles.h | 3 | ||||
| -rw-r--r-- | rect.c | 4 | ||||
| -rw-r--r-- | samegame.c | 4 | ||||
| -rw-r--r-- | sixteen.c | 4 | ||||
| -rw-r--r-- | solo.c | 4 | ||||
| -rw-r--r-- | twiddle.c | 4 |
15 files changed, 31 insertions, 28 deletions
@@ -984,8 +984,8 @@ static void free_game(game_state *state) sfree(state); } -static game_state *solve_game(game_state *state, game_aux_info *aux, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *aux, char **error) { return NULL; } @@ -379,8 +379,8 @@ static void free_game(game_state *state) sfree(state); } -static game_state *solve_game(game_state *state, game_aux_info *aux, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *aux, char **error) { game_state *ret = dup_game(state); int i; @@ -670,8 +670,8 @@ static void free_game(game_state *state) sfree(state); } -static game_state *solve_game(game_state *state, game_aux_info *aux, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *aux, char **error) { return NULL; } @@ -947,7 +947,9 @@ char *midend_solve(midend_data *me) return "No game set up to solve"; /* _shouldn't_ happen! */ msg = "Solve operation failed"; /* game _should_ overwrite on error */ - s = me->ourgame->solve(me->states[0].state, me->aux_info, &msg); + s = me->ourgame->solve(me->states[0].state, + me->states[me->statepos-1].state, + me->aux_info, &msg); if (!s) return msg; @@ -2385,8 +2385,8 @@ static void free_game(game_state *state) sfree(state); } -static game_state *solve_game(game_state *state, game_aux_info *aux, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *aux, char **error) { /* * Simply expose the entire grid as if it were a completed @@ -1666,8 +1666,8 @@ static void free_game(game_state *state) sfree(state); } -static game_state *solve_game(game_state *state, game_aux_info *aux, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *aux, char **error) { game_state *ret; @@ -893,8 +893,8 @@ static void free_game(game_state *state) sfree(state); } -static game_state *solve_game(game_state *state, game_aux_info *aux, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *aux, char **error) { game_state *ret; @@ -122,8 +122,8 @@ static void free_game(game_state *state) sfree(state); } -static game_state *solve_game(game_state *state, game_aux_info *aux, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *aux, char **error) { return NULL; } @@ -664,8 +664,8 @@ static void free_game(game_state *state) sfree(state); } -static game_state *solve_game(game_state *state, game_aux_info *ai, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *ai, char **error) { game_state *ret; @@ -248,7 +248,8 @@ struct game { game_state *(*dup_game)(game_state *state); void (*free_game)(game_state *state); int can_solve; - game_state *(*solve)(game_state *state, game_aux_info *aux, char **error); + game_state *(*solve)(game_state *orig, game_state *curr, + game_aux_info *aux, char **error); int can_format_as_text; char *(*text_format)(game_state *state); game_ui *(*new_ui)(game_state *state); @@ -1769,8 +1769,8 @@ static void free_game(game_state *state) sfree(state); } -static game_state *solve_game(game_state *state, game_aux_info *ai, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *ai, char **error) { game_state *ret; @@ -354,8 +354,8 @@ static void free_game(game_state *state) sfree(state); } -static game_state *solve_game(game_state *state, game_aux_info *aux, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *aux, char **error) { return NULL; } @@ -510,8 +510,8 @@ static void free_game(game_state *state) sfree(state); } -static game_state *solve_game(game_state *state, game_aux_info *aux, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *aux, char **error) { game_state *ret = dup_game(state); int i; @@ -1759,8 +1759,8 @@ static void free_game(game_state *state) sfree(state); } -static game_state *solve_game(game_state *state, game_aux_info *ai, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *ai, char **error) { game_state *ret; int c = state->c, r = state->r, cr = c*r; @@ -546,8 +546,8 @@ static int compare_int(const void *av, const void *bv) return 0; } -static game_state *solve_game(game_state *state, game_aux_info *aux, - char **error) +static game_state *solve_game(game_state *state, game_state *currstate, + game_aux_info *aux, char **error) { game_state *ret = dup_game(state); int i; |