Better gamepad support.
This commit is contained in:
parent
879fb555a5
commit
b7f2ebd477
4 changed files with 293 additions and 10 deletions
|
@ -392,6 +392,12 @@ CL_JoystickMove
|
|||
void CL_JoystickMove( usercmd_t *cmd ) {
|
||||
float anglespeed;
|
||||
|
||||
float yaw = j_yaw->value * cl.joystickAxis[j_yaw_axis->integer];
|
||||
float right = j_side->value * cl.joystickAxis[j_side_axis->integer];
|
||||
float forward = j_forward->value * cl.joystickAxis[j_forward_axis->integer];
|
||||
float pitch = j_pitch->value * cl.joystickAxis[j_pitch_axis->integer];
|
||||
float up = j_up->value * cl.joystickAxis[j_up_axis->integer];
|
||||
|
||||
if ( !(in_speed.active ^ cl_run->integer) ) {
|
||||
cmd->buttons |= BUTTON_WALKING;
|
||||
}
|
||||
|
@ -403,22 +409,22 @@ void CL_JoystickMove( usercmd_t *cmd ) {
|
|||
}
|
||||
|
||||
if ( !in_strafe.active ) {
|
||||
cl.viewangles[YAW] += anglespeed * j_yaw->value * cl.joystickAxis[j_yaw_axis->integer];
|
||||
cmd->rightmove = ClampChar( cmd->rightmove + (int) (j_side->value * cl.joystickAxis[j_side_axis->integer]) );
|
||||
cl.viewangles[YAW] += anglespeed * yaw;
|
||||
cmd->rightmove = ClampChar( cmd->rightmove + (int)right );
|
||||
} else {
|
||||
cl.viewangles[YAW] += anglespeed * j_side->value * cl.joystickAxis[j_side_axis->integer];
|
||||
cmd->rightmove = ClampChar( cmd->rightmove + (int) (j_yaw->value * cl.joystickAxis[j_yaw_axis->integer]) );
|
||||
cl.viewangles[YAW] += anglespeed * right;
|
||||
cmd->rightmove = ClampChar( cmd->rightmove + (int)yaw );
|
||||
}
|
||||
|
||||
if ( in_mlooking ) {
|
||||
cl.viewangles[PITCH] += anglespeed * j_forward->value * cl.joystickAxis[j_forward_axis->integer];
|
||||
cmd->forwardmove = ClampChar( cmd->forwardmove + (int) (j_pitch->value * cl.joystickAxis[j_pitch_axis->integer]) );
|
||||
cl.viewangles[PITCH] += anglespeed * forward;
|
||||
cmd->forwardmove = ClampChar( cmd->forwardmove + (int)pitch );
|
||||
} else {
|
||||
cl.viewangles[PITCH] += anglespeed * j_pitch->value * cl.joystickAxis[j_pitch_axis->integer];
|
||||
cmd->forwardmove = ClampChar( cmd->forwardmove + (int) (j_forward->value * cl.joystickAxis[j_forward_axis->integer]) );
|
||||
cl.viewangles[PITCH] += anglespeed * pitch;
|
||||
cmd->forwardmove = ClampChar( cmd->forwardmove + (int)forward );
|
||||
}
|
||||
|
||||
cmd->upmove = ClampChar( cmd->upmove + (int) (j_up->value * cl.joystickAxis[j_up_axis->integer]) );
|
||||
cmd->upmove = ClampChar( cmd->upmove + (int)up );
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -289,6 +289,33 @@ keyname_t keynames[] =
|
|||
{"EURO", K_EURO},
|
||||
{"UNDO", K_UNDO},
|
||||
|
||||
{"PAD0_A", K_PAD0_A },
|
||||
{"PAD0_B", K_PAD0_B },
|
||||
{"PAD0_X", K_PAD0_X },
|
||||
{"PAD0_Y", K_PAD0_Y },
|
||||
{"PAD0_BACK", K_PAD0_BACK },
|
||||
{"PAD0_GUIDE", K_PAD0_GUIDE },
|
||||
{"PAD0_START", K_PAD0_START },
|
||||
{"PAD0_LEFTSTICK_CLICK", K_PAD0_LEFTSTICK_CLICK },
|
||||
{"PAD0_RIGHTSTICK_CLICK", K_PAD0_RIGHTSTICK_CLICK },
|
||||
{"PAD0_LEFTSHOULDER", K_PAD0_LEFTSHOULDER },
|
||||
{"PAD0_RIGHTSHOULDER", K_PAD0_RIGHTSHOULDER },
|
||||
{"PAD0_DPAD_UP", K_PAD0_DPAD_UP },
|
||||
{"PAD0_DPAD_DOWN", K_PAD0_DPAD_DOWN },
|
||||
{"PAD0_DPAD_LEFT", K_PAD0_DPAD_LEFT },
|
||||
{"PAD0_DPAD_RIGHT", K_PAD0_DPAD_RIGHT },
|
||||
|
||||
{"PAD0_LEFTSTICK_LEFT", K_PAD0_LEFTSTICK_LEFT },
|
||||
{"PAD0_LEFTSTICK_RIGHT", K_PAD0_LEFTSTICK_RIGHT },
|
||||
{"PAD0_LEFTSTICK_UP", K_PAD0_LEFTSTICK_UP },
|
||||
{"PAD0_LEFTSTICK_DOWN", K_PAD0_LEFTSTICK_DOWN },
|
||||
{"PAD0_RIGHTSTICK_LEFT", K_PAD0_RIGHTSTICK_LEFT },
|
||||
{"PAD0_RIGHTSTICK_RIGHT", K_PAD0_RIGHTSTICK_RIGHT },
|
||||
{"PAD0_RIGHTSTICK_UP", K_PAD0_RIGHTSTICK_UP },
|
||||
{"PAD0_RIGHTSTICK_DOWN", K_PAD0_RIGHTSTICK_DOWN },
|
||||
{"PAD0_LEFTTRIGGER", K_PAD0_LEFTTRIGGER },
|
||||
{"PAD0_RIGHTTRIGGER", K_PAD0_RIGHTTRIGGER },
|
||||
|
||||
{NULL,0}
|
||||
};
|
||||
|
||||
|
|
|
@ -260,6 +260,36 @@ typedef enum {
|
|||
K_EURO,
|
||||
K_UNDO,
|
||||
|
||||
// Gamepad controls
|
||||
// Ordered to match SDL2 game controller buttons and axes
|
||||
// Do not change this order without also changing IN_GamepadMove() in SDL_input.c
|
||||
K_PAD0_A,
|
||||
K_PAD0_B,
|
||||
K_PAD0_X,
|
||||
K_PAD0_Y,
|
||||
K_PAD0_BACK,
|
||||
K_PAD0_GUIDE,
|
||||
K_PAD0_START,
|
||||
K_PAD0_LEFTSTICK_CLICK,
|
||||
K_PAD0_RIGHTSTICK_CLICK,
|
||||
K_PAD0_LEFTSHOULDER,
|
||||
K_PAD0_RIGHTSHOULDER,
|
||||
K_PAD0_DPAD_UP,
|
||||
K_PAD0_DPAD_DOWN,
|
||||
K_PAD0_DPAD_LEFT,
|
||||
K_PAD0_DPAD_RIGHT,
|
||||
|
||||
K_PAD0_LEFTSTICK_LEFT,
|
||||
K_PAD0_LEFTSTICK_RIGHT,
|
||||
K_PAD0_LEFTSTICK_UP,
|
||||
K_PAD0_LEFTSTICK_DOWN,
|
||||
K_PAD0_RIGHTSTICK_LEFT,
|
||||
K_PAD0_RIGHTSTICK_RIGHT,
|
||||
K_PAD0_RIGHTSTICK_UP,
|
||||
K_PAD0_RIGHTSTICK_DOWN,
|
||||
K_PAD0_LEFTTRIGGER,
|
||||
K_PAD0_RIGHTTRIGGER,
|
||||
|
||||
// Pseudo-key that brings the console down
|
||||
K_CONSOLE,
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue