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.
This commit is contained in:
Franklin Wei
2018-04-17 16:18:16 -04:00
committed by Simon Tatham
parent 3d04dd3335
commit 60a929a250
45 changed files with 315 additions and 0 deletions

22
keen.c
View File

@ -1251,6 +1251,27 @@ static const char *validate_desc(const game_params *params, const char *desc)
return NULL;
}
static key_label *game_request_keys(const game_params *params, int *nkeys)
{
int i;
int w = params->w;
key_label *keys = snewn(w+1, key_label);
*nkeys = w + 1;
for (i = 0; i < w; i++) {
if (i<9) keys[i].button = '1' + i;
else keys[i].button = 'a' + i - 9;
keys[i].label = NULL;
}
keys[w].button = '\b';
keys[w].label = NULL;
return keys;
}
static game_state *new_game(midend *me, const game_params *params,
const char *desc)
{
@ -2354,6 +2375,7 @@ const struct game thegame = {
free_ui,
encode_ui,
decode_ui,
game_request_keys,
game_changed_state,
interpret_move,
execute_move,