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

@ -1705,6 +1705,11 @@ done:
return move;
}
static int game_can_format_as_text_now(game_params *params)
{
return TRUE;
}
/* 'borrowed' from slant.c, mainly. I could have printed it one
* character per cell (like debug_state) but that comes out tiny.
* 'L' is used for 'light here' because 'O' looks too much like '0'
@ -2240,7 +2245,7 @@ const struct game thegame = {
dup_game,
free_game,
TRUE, solve_game,
TRUE, game_text_format,
TRUE, game_can_format_as_text_now, game_text_format,
new_ui,
free_ui,
encode_ui,