aboutsummaryrefslogtreecommitdiff
path: root/netslide.c
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2005-06-06 11:21:36 +0000
committerSimon Tatham <anakin@pobox.com>2005-06-06 11:21:36 +0000
commit69f7e7f8f5890946f4625fc071eb3f8313b17238 (patch)
tree6d6dfa8255a2d7a2b5a3529bb3b9a4b0f6101e66 /netslide.c
parent57b3982c83694eb61dd97762ecfb3d53eeabf4f4 (diff)
downloadpuzzles-69f7e7f8f5890946f4625fc071eb3f8313b17238.zip
puzzles-69f7e7f8f5890946f4625fc071eb3f8313b17238.tar.gz
puzzles-69f7e7f8f5890946f4625fc071eb3f8313b17238.tar.bz2
puzzles-69f7e7f8f5890946f4625fc071eb3f8313b17238.tar.xz
Introduce a new game backend function (there seem to have been a lot
of these recently) whose job is to update a game_ui to be consistent with a new game_state. This is called by midend.c in every situation where the current game_state changes _other_ than as a result of make_move (Undo, Redo, Restart, Solve). The introduction of this function allows a game_ui to contain information about selections or highlights within a game_state which simply wouldn't make sense when transferred to another game_state. In particular, I've used it to fix a subtle bug in Solo whereby, although you couldn't right-click to pencil-mode highlight a filled square, you could _get_ a pencil-mode highlight in a filled square if you used Undo and Redo. (Undo to before the square was filled, right-click to highlight it, then Redo. Alternatively, left-click and clear the square, right-click to highlight it, then Undo.) [originally from svn r5912]
Diffstat (limited to 'netslide.c')
-rw-r--r--netslide.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/netslide.c b/netslide.c
index 0ab3e34..e6751fe 100644
--- a/netslide.c
+++ b/netslide.c
@@ -1045,6 +1045,11 @@ static void slide_col(game_state *state, int dir, int col)
slide_col_int(state->width, state->height, state->tiles, dir, col);
}
+static void game_changed_state(game_ui *ui, game_state *oldstate,
+ game_state *newstate)
+{
+}
+
static game_state *make_move(game_state *state, game_ui *ui,
game_drawstate *ds, int x, int y, int button)
{
@@ -1749,6 +1754,7 @@ const struct game thegame = {
FALSE, game_text_format,
new_ui,
free_ui,
+ game_changed_state,
make_move,
game_size,
game_colours,