Change special keys into extended commands
Changes most of the special keys used in the main input loop into extended commands: - movement keys are now bound to extended commands, eg. #movewest and so on. - m-prefix is now #reqmenu extended command, still bound to the 'm' key. - run, rush, and fight are now extended commands, still bound to the same keys as previously. - nopickup and runnopickup keys are removed. Nopickup was using 'm' key, the same as the m-prefix, so allow #reqmenu to modify movement commands to disable pickup. - multiple prefix commands are allowed. This lets user to use #reqmenu, followed by #run, followed by movement to simulate runnopickup behaviour. (If necessary, adding runnopickup back as an extended command would be easy)
This commit is contained in:
@@ -445,20 +445,6 @@ enum nh_keyfunc {
|
||||
NHKF_ESC = 0,
|
||||
NHKF_DOAGAIN,
|
||||
|
||||
NHKF_REQMENU,
|
||||
|
||||
/* run ... clicklook need to be in a continuous block */
|
||||
NHKF_RUN, /* 'G' */
|
||||
NHKF_RUN2, /* '5' or M-5 */
|
||||
NHKF_RUSH, /* 'g' */
|
||||
NHKF_RUSH2, /* M-5 or '5' */
|
||||
NHKF_FIGHT, /* 'F' */
|
||||
NHKF_FIGHT2, /* '-' */
|
||||
NHKF_NOPICKUP, /* 'm' */
|
||||
NHKF_RUN_NOPICKUP, /* 'M' */
|
||||
|
||||
NHKF_REDRAW,
|
||||
NHKF_REDRAW2,
|
||||
NHKF_GETDIR_SELF,
|
||||
NHKF_GETDIR_SELF2,
|
||||
NHKF_GETDIR_HELP,
|
||||
@@ -503,9 +489,6 @@ struct cmd {
|
||||
boolean pcHack_compat; /* for numpad: affects 5, M-5, and M-0 */
|
||||
boolean phone_layout; /* inverted keypad: 1,2,3 above, 7,8,9 below */
|
||||
boolean swap_yz; /* QWERTZ keyboards; use z to move NW, y to zap */
|
||||
char move[N_DIRS]; /* char used for moving one step in direction */
|
||||
char rush[N_DIRS];
|
||||
char run[N_DIRS];
|
||||
const char *dirchars; /* current movement/direction characters */
|
||||
const char *alphadirchars; /* same as dirchars if !numpad */
|
||||
const struct ext_func_tab *commands[256]; /* indexed by input character */
|
||||
|
||||
@@ -199,12 +199,41 @@ extern boolean status_hilite_menu(void);
|
||||
|
||||
/* ### cmd.c ### */
|
||||
|
||||
extern int do_move_west(void);
|
||||
extern int do_move_northwest(void);
|
||||
extern int do_move_north(void);
|
||||
extern int do_move_northeast(void);
|
||||
extern int do_move_east(void);
|
||||
extern int do_move_southeast(void);
|
||||
extern int do_move_south(void);
|
||||
extern int do_move_southwest(void);
|
||||
extern int do_rush_west(void);
|
||||
extern int do_rush_northwest(void);
|
||||
extern int do_rush_north(void);
|
||||
extern int do_rush_northeast(void);
|
||||
extern int do_rush_east(void);
|
||||
extern int do_rush_southeast(void);
|
||||
extern int do_rush_south(void);
|
||||
extern int do_rush_southwest(void);
|
||||
extern int do_run_west(void);
|
||||
extern int do_run_northwest(void);
|
||||
extern int do_run_north(void);
|
||||
extern int do_run_northeast(void);
|
||||
extern int do_run_east(void);
|
||||
extern int do_run_southeast(void);
|
||||
extern int do_run_south(void);
|
||||
extern int do_run_southwest(void);
|
||||
extern int do_reqmenu(void);
|
||||
extern int do_rush(void);
|
||||
extern int do_run(void);
|
||||
extern int do_fight(void);
|
||||
extern char randomkey(void);
|
||||
extern void random_response(char *, int);
|
||||
extern int rnd_extcmd_idx(void);
|
||||
extern int domonability(void);
|
||||
extern const struct ext_func_tab *ext_func_tab_from_func(int(*)(void));
|
||||
extern char cmd_from_func(int(*)(void));
|
||||
extern char cmd_from_dir(int, int);
|
||||
extern const char *cmdname_from_func(int(*)(void), char *, boolean);
|
||||
extern boolean redraw_cmd(char);
|
||||
extern const char *levltyp_to_name(int);
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#define NOFUZZERCMD 0x20 /* fuzzer cannot execute this command */
|
||||
#define INTERNALCMD 0x40 /* only for internal use, not for user */
|
||||
#define CMD_M_PREFIX 0x80 /* accepts menu prefix */
|
||||
#define PREFIXCMD 0x100 /* prefix command, requires another one after it */
|
||||
#define MOVEMENTCMD 0x200 /* used to move hero/cursor */
|
||||
|
||||
struct ext_func_tab {
|
||||
uchar key;
|
||||
|
||||
Reference in New Issue
Block a user