#include "control.h"
#include <stdint.h> /* uint8_t, uint16_t */
#include <stdio.h> /* sprintf() */
-#include <string.h> /* strlen() */
-#include "command_db.h" /* get_command_id(), is_command_id_shortdsc() */
+#include <string.h> /* strlen(), strcmp() */
+#include "command_db.h" /* get_command_id() */
#include "io.h" /* try_send() */
#include "keybindings.h" /* struct KeyBindingDB, get_command_to_keycode(),
* get_keycode_to_command(), mod_selected_keyb(),
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.
+/* If "command" matches "match", send (via try_send()) a string of
+ * "command_message" + " " + 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);
+static uint8_t try_player_cmd(char * command, char * match,
+ char * command_message, 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);
-static uint8_t try_player_cmd(int command_id, char * match, char * command_name,
- uint8_t arg)
+static uint8_t try_player_cmd(char * command, char * match,
+ char * command_message, uint8_t arg)
{
- if (is_command_id_shortdsc(command_id, match))
+ if (!strcmp(command, match))
{
- uint8_t command_size = strlen(command_name);
+ uint8_t command_size = strlen(command_message);
uint8_t arg_size = 3;
char msg[command_size + 1 + arg_size + 1];
- sprintf(msg, "%s %d", command_name, arg);
+ sprintf(msg, "%s %d", command_message, arg);
try_send(msg);
return 1;
}
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);
}
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
+ && ( try_player_cmd(cmd, "wait", "wait", 0)
+ || try_player_cmd(cmd, "drop", "drop",world.player_inventory_select)
+ || try_player_cmd(cmd, "pick", "pick_up", 0)
+ || try_player_cmd(cmd, "use", "use", world.player_inventory_select)
+ || try_player_cmd(cmd, "player_u", "move", 'N')
+ || try_player_cmd(cmd, "player_d", "move", 'S')
+ || try_player_cmd(cmd, "player_r", "move", 'E')
+ || try_player_cmd(cmd, "player_l", "move", 'W')))
{
- 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'))
- {
- return 1;
- }
+ return 1;
}
return 0;
}