New infrastructure feature. Games are now permitted to be

_conditionally_ able to format the current puzzle as text to be sent
to the clipboard. For instance, if a game were to support playing on
a square grid and on other kinds of grid such as hexagonal, then it
might reasonably feel that only the former could be sensibly
rendered in ASCII art; so it can now arrange for the "Copy" menu
item to be greyed out depending on the game_params.

To do this I've introduced a new backend function
(can_format_as_text_now()), and renamed the existing static backend
field "can_format_as_text" to "can_format_as_text_ever". The latter
will cause compile errors for anyone maintaining a third-party front
end; if any such person is reading this, I apologise to them for the
inconvenience, but I did do it deliberately so that they'd know to
update their front end.

As yet, no checked-in game actually uses this feature; all current
games can still either copy always or copy never.

[originally from svn r8161]
This commit is contained in:
Simon Tatham
2008-09-06 09:27:56 +00:00
parent c6b1d4472b
commit a7431c0b7c
38 changed files with 303 additions and 55 deletions

View File

@ -1369,6 +1369,11 @@ static char *solve_game(game_state *state, game_state *currstate,
}
}
static int game_can_format_as_text_now(game_params *params)
{
return TRUE;
}
static char *game_text_format(game_state *state)
{
int w = state->p.w, h = state->p.h;
@ -2068,7 +2073,7 @@ const struct game thegame = {
dup_game,
free_game,
TRUE, solve_game,
FALSE, game_text_format,
FALSE, game_can_format_as_text_now, game_text_format,
new_ui,
free_ui,
encode_ui,