mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-26 22:31:05 +00:00
Add menu commands + fixes
This commit is contained in:
parent
ee436d89f6
commit
e3e0d6aaa9
4 changed files with 111 additions and 5 deletions
|
@ -146,4 +146,9 @@ int Menu_KeyEvent (knum_t key, short unicode, qboolean down);
|
|||
void Menu_Enter (void);
|
||||
void Menu_Leave (void);
|
||||
|
||||
void Menu_Enter_f (void);
|
||||
void Menu_Leave_f (void);
|
||||
void Menu_Prev_f (void);
|
||||
void Menu_Next_f (void);
|
||||
|
||||
#endif // __console_h
|
||||
|
|
|
@ -51,6 +51,7 @@ typedef enum {
|
|||
} js_dest_t;
|
||||
|
||||
typedef enum {
|
||||
js_clear,
|
||||
js_amp,
|
||||
js_pre_amp,
|
||||
js_deadzone,
|
||||
|
@ -94,6 +95,7 @@ extern struct joy_button joy_buttons[JOY_MAX_BUTTONS];
|
|||
joy_enable->int_val are zero.
|
||||
*/
|
||||
void JOY_Command (void);
|
||||
void joy_clear_axis (int i);
|
||||
|
||||
/*
|
||||
JOY_Move (usercmd_t *) // FIXME: Not anymore!
|
||||
|
|
|
@ -452,6 +452,26 @@ bi_Menu_Enter (progs_t *pr)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
bi_Menu_Leave (progs_t *pr)
|
||||
{
|
||||
if (menu) {
|
||||
if (menu->leave_hook) {
|
||||
run_menu_pre ();
|
||||
PR_ExecuteProgram (&menu_pr_state, menu->leave_hook);
|
||||
run_menu_post ();
|
||||
}
|
||||
menu = menu->parent;
|
||||
if (!menu) {
|
||||
if (con_data.force_commandline) {
|
||||
Key_SetKeyDest (key_console);
|
||||
} else {
|
||||
Key_SetKeyDest (key_game);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
togglemenu_f (void)
|
||||
{
|
||||
|
@ -517,9 +537,38 @@ static builtin_t builtins[] = {
|
|||
{"Menu_Next", bi_Menu_Next, -1},
|
||||
{"Menu_Prev", bi_Menu_Prev, -1},
|
||||
{"Menu_Enter", bi_Menu_Enter, -1},
|
||||
{"Menu_Leave", bi_Menu_Leave, -1},
|
||||
{0},
|
||||
};
|
||||
|
||||
|
||||
|
||||
void
|
||||
Menu_Enter_f (void)
|
||||
{
|
||||
if (!Menu_KeyEvent(QFK_RETURN, '\0', true))
|
||||
Menu_KeyEvent('y', 'y', true);
|
||||
}
|
||||
|
||||
void
|
||||
Menu_Leave_f (void)
|
||||
{
|
||||
Menu_Leave ();
|
||||
}
|
||||
|
||||
void
|
||||
Menu_Prev_f (void)
|
||||
{
|
||||
Menu_KeyEvent (QFK_UP, '\0', true);
|
||||
}
|
||||
|
||||
void
|
||||
Menu_Next_f (void)
|
||||
{
|
||||
Menu_KeyEvent (QFK_DOWN, '\0', true);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
Menu_Init (void)
|
||||
{
|
||||
|
@ -549,6 +598,10 @@ Menu_Init (void)
|
|||
"Toggle the display of the menu");
|
||||
Cmd_RemoveCommand ("quit");
|
||||
Cmd_AddCommand ("quit", quit_f, "Exit the program");
|
||||
Cmd_AddCommand ("Menu_Enter", Menu_Enter_f, "Do menu action/move up in the menu tree.");
|
||||
Cmd_AddCommand ("Menu_Leave", Menu_Leave_f, "Move down in the menu tree.");
|
||||
Cmd_AddCommand ("Menu_Prev", Menu_Prev_f, "Move cursor up.");
|
||||
Cmd_AddCommand ("Menu_Next", Menu_Next_f, "Move cursor up.");
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -69,6 +69,21 @@ ocvar_t joy_axes_cvar_init[JOY_MAX_AXES] = {
|
|||
struct joy_axis joy_axes[JOY_MAX_AXES];
|
||||
struct joy_button joy_buttons[JOY_MAX_BUTTONS];
|
||||
|
||||
void
|
||||
joy_clear_axis (int i)
|
||||
{
|
||||
joy_axes[i].dest = js_none;
|
||||
joy_axes[i].amp = 1;
|
||||
joy_axes[i].pre_amp = 1;
|
||||
joy_axes[i].deadzone = 12500;
|
||||
|
||||
joy_axes[i].num_buttons = 0;
|
||||
if (joy_axes[i].axis_buttons) {
|
||||
free (joy_axes[i].axis_buttons);
|
||||
joy_axes[i].axis_buttons = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
joy_check_axis_buttons (struct joy_axis *ja, float value)
|
||||
{
|
||||
|
@ -203,6 +218,7 @@ js_dests_t js_dests[] = {
|
|||
|
||||
|
||||
js_opts_t js_opts[] = {
|
||||
{"clear", js_clear},
|
||||
{"amp", js_amp},
|
||||
{"pre_amp", js_pre_amp},
|
||||
{"deadzone",js_deadzone},
|
||||
|
@ -267,6 +283,12 @@ in_joy_f (void)
|
|||
if (c == 2) {
|
||||
ax = JOY_GetOption_i (Cmd_Argv(1));
|
||||
switch (ax) {
|
||||
case js_clear:
|
||||
Sys_Printf("Clearing all joystick settings...\n");
|
||||
for (i = 0; i<JOY_MAX_AXES;i++) {
|
||||
joy_clear_axis (i);
|
||||
}
|
||||
break;
|
||||
case js_amp:
|
||||
Sys_Printf("[...]<amp> [<#amp>]: Axis sensitivity\n");
|
||||
break;
|
||||
|
@ -302,15 +324,23 @@ in_joy_f (void)
|
|||
Sys_Printf ("<====================>\n");
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
else if (c < 4) {
|
||||
if (JOY_GetOption_i (Cmd_Argv(2)) == js_clear) {
|
||||
ax = strtol(Cmd_Argv(1), NULL ,0);
|
||||
|
||||
joy_clear_axis (ax);
|
||||
return;
|
||||
} else {
|
||||
Sys_Printf ("in_joy <axis#> [<var> <value>]* : Configures the joystick behaviour\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ax = strtol(Cmd_Argv(1), NULL ,0);
|
||||
|
||||
const char *arg;
|
||||
i = 2;
|
||||
while(i<c)
|
||||
{
|
||||
|
@ -338,8 +368,15 @@ in_joy_f (void)
|
|||
}
|
||||
break;
|
||||
case js_axis_button:
|
||||
char *arg = Cmd_Argv(i++);
|
||||
arg = Cmd_Argv(i++);
|
||||
if (!strcmp("add", arg)) {
|
||||
int n = joy_axes[ax].num_buttons++;
|
||||
joy_axes[ax].axis_buttons = realloc(joy_axes[ax].axis_buttons,
|
||||
/*sizeof*/ n*sizeof(joy_axes[ax].axis_buttons));
|
||||
|
||||
joy_axes[ax].axis_buttons[n].key = strtol (Cmd_Argv(i++), NULL, 10) + QFJ_AXIS1;
|
||||
joy_axes[ax].axis_buttons[n].threshold = strtof(Cmd_Argv(i++), NULL);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Sys_Printf ("Unknown option %s.\n", Cmd_Argv(i-1));
|
||||
|
@ -367,7 +404,7 @@ JOY_Init_Cvars (void)
|
|||
joy_axes[i].dest = js_none;
|
||||
joy_axes[i].amp = 1;
|
||||
joy_axes[i].pre_amp = 1;
|
||||
joy_axes[i].deadzone = 7500;
|
||||
joy_axes[i].deadzone = 12500;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -381,6 +418,15 @@ Joy_WriteBindings (QFile *f)
|
|||
Qprintf(f, "in_joy %i amp %f pre_amp %f deadzone %i offset %f type %s %i\n",
|
||||
i, joy_axes[i].amp, joy_axes[i].pre_amp, joy_axes[i].deadzone,
|
||||
joy_axes[i].offset, JOY_GetDest_c (joy_axes[i].dest), joy_axes[i].axis);
|
||||
|
||||
if (joy_axes[i].num_buttons > 0) {
|
||||
int n;
|
||||
for (n=0;n<joy_axes[i].num_buttons;n++) {
|
||||
Qprintf(f, "in_joy %i button add %i %f\n", i,
|
||||
joy_axes[i].axis_buttons[n].key - QFJ_AXIS1,
|
||||
joy_axes[i].axis_buttons[n].threshold);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue