diff options
| author | Franklin Wei <me@fwei.tk> | 2018-04-17 16:18:16 -0400 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2018-04-22 17:04:50 +0100 |
| commit | 60a929a250cf4f7f87ac082e5705f9a838a7f8c8 (patch) | |
| tree | 33a8a715f6320d2a2d58532b04e33ef111f31507 /solo.c | |
| parent | 3d04dd3335a2c4c6007ff4e2a58a2855c7a9c52a (diff) | |
| download | puzzles-60a929a250cf4f7f87ac082e5705f9a838a7f8c8.zip puzzles-60a929a250cf4f7f87ac082e5705f9a838a7f8c8.tar.gz puzzles-60a929a250cf4f7f87ac082e5705f9a838a7f8c8.tar.bz2 puzzles-60a929a250cf4f7f87ac082e5705f9a838a7f8c8.tar.xz | |
Add a request_keys() function with a midend wrapper.
This function gives the front end a way to find out what keys the back
end requires; and as such it is mostly useful for ports without a
keyboard. It is based on changes originally found in Chris Boyle's
Android port, though some modifications were needed to make it more
flexible.
Diffstat (limited to 'solo.c')
| -rw-r--r-- | solo.c | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -3608,6 +3608,26 @@ static struct block_structure *gen_killer_cages(int cr, random_state *rs, return b; } +static key_label *game_request_keys(const game_params *params, int *nkeys) +{ + int i; + int cr = params->c * params->r; + key_label *keys = snewn(cr+1, key_label); + *nkeys = cr + 1; + + for (i = 0; i < cr; i++) { + if (i<9) keys[i].button = '1' + i; + else keys[i].button = 'a' + i - 9; + + keys[i].label = NULL; + } + keys[cr].button = '\b'; + keys[cr].label = NULL; + + + return keys; +} + static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { @@ -5579,6 +5599,7 @@ const struct game thegame = { free_ui, encode_ui, decode_ui, + game_request_keys, game_changed_state, interpret_move, execute_move, |