/** * Parse and execute the current command * Give "Warning" on illegal commands. */ void textui_process_command(void) { int count = 0; bool done = TRUE; ui_event e = textui_get_command(&count); struct cmd_info *cmd = NULL; unsigned char key = '\0'; int mode = OPT(rogue_like_commands) ? KEYMAP_MODE_ROGUE : KEYMAP_MODE_ORIG; switch (e.type) { case EVT_RESIZE: do_cmd_redraw(); return; case EVT_MOUSE: textui_process_click(e); return; case EVT_BUTTON: case EVT_KBRD: done = textui_process_key(e.key, &key, count); break; default: ; } /* Null command */ if (!key && done) return; if (key == KC_ENTER) { /* Use command menus */ cmd = textui_action_menu_choose(); } else { /* Command key */ cmd = converted_list[mode][key]; } if (cmd && done) { /* Confirm for worn equipment inscriptions, check command prereqs */ if (!key_confirm_command(key) || (cmd->prereq && !cmd->prereq())) cmd = NULL; /* Split on type of command */ if (cmd && cmd->hook) /* UI command */ cmd->hook(); else if (cmd && cmd->cmd) /* Game command */ cmdq_push_repeat(cmd->cmd, count); } else /* Error */ do_cmd_unknown(); }
/** * Parse and execute the current command * Give "Warning" on illegal commands. */ void textui_process_command(bool no_request) { int count = 0; bool done = TRUE; ui_event e; e = textui_get_command(&count); switch (e.type) { case EVT_RESIZE: do_cmd_redraw(); break; case EVT_MOUSE: textui_process_click(e); break; case EVT_BUTTON: case EVT_KBRD: done = textui_process_key(e.key, count); break; default: ; } if (!done) do_cmd_unknown(); }