chiark / gitweb /
Change of policy on game_changed_state(). Originally, it was called
authorSimon Tatham <anakin@pobox.com>
Sun, 10 Jul 2005 10:06:04 +0000 (10:06 +0000)
committerSimon Tatham <anakin@pobox.com>
Sun, 10 Jul 2005 10:06:04 +0000 (10:06 +0000)
commit145301d0dc5b75a89620ffe88bc8a890699eef59
tree5c9dcee0d3157b1b64760a7909e199c51b35db56
parentac36314b021854a642593be87a99cad9b04333a5
Change of policy on game_changed_state(). Originally, it was called
by the midend every time the game state changed _other_ than as a
result of make_move(), on the basis that when the game state changed
due to make_move() the game backend had probably noticed anyway.
However, when make_move() split up, this became more fiddly: if the
game_ui had to be updated based on some property of the final game
state, then execute_move() couldn't do it because it didn't have a
pointer to the game_ui, but it was fiddly to do it in
interpret_move() because that didn't directly have a copy of the
finished game state to examine. Same Game (the only game to be
affected) had to deal with this by actually having interpret_move()
_call_ execute_move() to construct a temporary new game state,
update the UI, and then throw it away.

So now, game_changed_state() is called _every_ time the current game
state changes, which means that if anything needs doing to the
game_ui as a result of examining the new game state, it can be done
there and save a lot of effort.

[originally from svn r6087]
midend.c
samegame.c