X-Git-Url: https://plomlompom.com/repos/processes?a=blobdiff_plain;f=src%2Fclient%2Fcontrol.c;h=56c41fd4b132a34e37cf9c880065ec5af0bb035d;hb=c53b1488c5a53e8b12cb3a631763f98010420690;hp=20f1fcf9ceccf177148e20d417d88c8593969ccc;hpb=f3b2d921ba31950283ea5dc4a5e5b342a64b0845;p=plomrogue diff --git a/src/client/control.c b/src/client/control.c index 20f1fcf..56c41fd 100644 --- a/src/client/control.c +++ b/src/client/control.c @@ -4,7 +4,7 @@ #include /* uint8_t, uint16_t */ #include /* sprintf() */ #include /* strlen() */ -#include "command_db.h" /* get_command_id(), is_command_id_shortdsc() */ +#include "command_db.h" /* get_command_data() */ #include "io.h" /* try_send() */ #include "keybindings.h" /* struct KeyBindingDB, get_command_to_keycode(), * get_keycode_to_command(), mod_selected_keyb(), @@ -23,21 +23,15 @@ -/* If "command_id" matches "match" in get_available_keycode_to_command(), - * execute "f" with provided char arguments and return 1; else only return 0. +/* If "keycode" matches "match" in get_available_keycode_to_command(), execute + * "f" with provided char arguments and return 1; else only return 0. */ -static uint8_t try_cmd_0args(int command_id, char * match, void (* f) ()); -static uint8_t try_cmd_1args(int command_id, char * match, +static uint8_t try_cmd_0args(int keycode, char * match, void (* f) ()); +static uint8_t try_cmd_1args(int keycode, char * match, void (* f) (char), char c); -static uint8_t try_cmd_2args(int command_id, char * match, +static uint8_t try_cmd_2args(int keycode, char * match, void (* f) (char, char), char c1, char c2); -/* If "command_id" is id of command named "match", send (via try_send()) a - * string of "match" + " " + the string representation of "arg" to the server. - */ -static uint8_t try_player_cmd(int command_id, char * match, char * command_name, - uint8_t arg); - /* Return keycode to "command" if it is available in current window config. */ static uint16_t get_available_keycode_to_command(char * command); @@ -52,9 +46,9 @@ static void wrap_mv_kb_mod(char c1, char c2); -static uint8_t try_cmd_0args(int command_id, char * match, void (* f) ()) +static uint8_t try_cmd_0args(int keycode, char * match, void (* f) ()) { - if (command_id == get_available_keycode_to_command(match)) + if (keycode == get_available_keycode_to_command(match)) { f(); return 1; @@ -64,10 +58,10 @@ static uint8_t try_cmd_0args(int command_id, char * match, void (* f) ()) -static uint8_t try_cmd_1args(int command_id, char * match, +static uint8_t try_cmd_1args(int keycode, char * match, void (* f) (char), char c) { - if (command_id == get_available_keycode_to_command(match)) + if (keycode == get_available_keycode_to_command(match)) { f(c); return 1; @@ -77,10 +71,10 @@ static uint8_t try_cmd_1args(int command_id, char * match, -static uint8_t try_cmd_2args(int command_id, char * match, +static uint8_t try_cmd_2args(int keycode, char * match, void (* f) (char, char), char c1, char c2) { - if (command_id == get_available_keycode_to_command(match)) + if (keycode == get_available_keycode_to_command(match)) { f(c1, c2); return 1; @@ -90,23 +84,6 @@ static uint8_t try_cmd_2args(int command_id, char * match, -static uint8_t try_player_cmd(int command_id, char * match, char * command_name, - uint8_t arg) -{ - if (is_command_id_shortdsc(command_id, match)) - { - uint8_t command_size = strlen(command_name); - uint8_t arg_size = 3; - char msg[command_size + 1 + arg_size + 1]; - sprintf(msg, "%s %d", command_name, arg); - try_send(msg); - return 1; - } - return 0; -} - - - static uint16_t get_available_keycode_to_command(char * command) { uint16_t keycode = get_keycode_to_command(world.kb_global.kbs, command); @@ -115,7 +92,7 @@ static uint16_t get_available_keycode_to_command(char * command) return keycode; } struct WinConf * wc = get_winconf_by_win(world.wmeta.active); - if (0 == wc->view) + if (0 == wc->view) { keycode = get_keycode_to_command(wc->kb.kbs, command); } @@ -170,26 +147,26 @@ static void wrap_mv_kb_mod(char c1, char c2) extern uint8_t player_control(int key) { - char * command = get_command_to_keycode(world.kb_global.kbs, key); - if (NULL == command && 0 != world.wmeta.active) + char * cmd = get_command_to_keycode(world.kb_global.kbs, key); + if (NULL == cmd && 0 != world.wmeta.active) { struct WinConf * wc = get_winconf_by_win(world.wmeta.active); - command = get_command_to_keycode(wc->kb.kbs, key); + cmd = get_command_to_keycode(wc->kb.kbs, key); } - if (NULL != command) + if (NULL != cmd) { - uint8_t id = get_command_id(command); - if ( try_player_cmd(id, "wait", "wait", 0) - || try_player_cmd(id, "drop", "drop", world.player_inventory_select) - || try_player_cmd(id, "pick", "pick_up", 0) - || try_player_cmd(id, "use", "use", world.player_inventory_select) - || try_player_cmd(id, "player_u", "move", 'N') - || try_player_cmd(id, "player_d", "move", 'S') - || try_player_cmd(id, "player_r", "move", 'E') - || try_player_cmd(id, "player_l", "move", 'W')) + struct Command * command_data = get_command_data(cmd); + uint8_t arg = (uint8_t) command_data->arg; + if ('i' == arg) { - return 1; + arg = world.player_inventory_select; } + uint8_t command_size = strlen(command_data->server_msg); + uint8_t arg_size = 3; + char msg[command_size + 1 + arg_size + 1]; + sprintf(msg, "%s %d", command_data->server_msg, arg); + try_send(msg); + return 1; } return 0; }