Fixed diagonal analog input being weakened
Using a keyboard and an analog stick should now give you similar acceleration in all directions.
This commit is contained in:
parent
ce0a49ede5
commit
e020352c0c
19
src/g_game.c
19
src/g_game.c
|
@ -981,7 +981,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
||||||
INT32 tspeed, forward, side, axis, i;
|
INT32 tspeed, forward, side, axis, i;
|
||||||
const INT32 speed = 1;
|
const INT32 speed = 1;
|
||||||
// these ones used for multiple conditions
|
// these ones used for multiple conditions
|
||||||
boolean turnleft, turnright, mouseaiming, analogjoystickmove, gamepadjoystickmove;
|
boolean turnleft, turnright, strafelkey, straferkey, movefkey, movebkey, mouseaiming, analogjoystickmove, gamepadjoystickmove;
|
||||||
player_t *player = &players[consoleplayer];
|
player_t *player = &players[consoleplayer];
|
||||||
camera_t *thiscam = &camera;
|
camera_t *thiscam = &camera;
|
||||||
|
|
||||||
|
@ -1002,6 +1002,12 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
||||||
|
|
||||||
turnright = PLAYER1INPUTDOWN(gc_turnright);
|
turnright = PLAYER1INPUTDOWN(gc_turnright);
|
||||||
turnleft = PLAYER1INPUTDOWN(gc_turnleft);
|
turnleft = PLAYER1INPUTDOWN(gc_turnleft);
|
||||||
|
|
||||||
|
straferkey = PLAYER1INPUTDOWN(gc_straferight);
|
||||||
|
strafelkey = PLAYER1INPUTDOWN(gc_strafeleft);
|
||||||
|
movefkey = PLAYER1INPUTDOWN(gc_forward);
|
||||||
|
movebkey = PLAYER1INPUTDOWN(gc_backward);
|
||||||
|
|
||||||
mouseaiming = (PLAYER1INPUTDOWN(gc_mouseaiming)) ^ cv_alwaysfreelook.value;
|
mouseaiming = (PLAYER1INPUTDOWN(gc_mouseaiming)) ^ cv_alwaysfreelook.value;
|
||||||
analogjoystickmove = cv_usejoystick.value && !Joystick.bGamepadStyle;
|
analogjoystickmove = cv_usejoystick.value && !Joystick.bGamepadStyle;
|
||||||
gamepadjoystickmove = cv_usejoystick.value && Joystick.bGamepadStyle;
|
gamepadjoystickmove = cv_usejoystick.value && Joystick.bGamepadStyle;
|
||||||
|
@ -1090,9 +1096,9 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
||||||
|
|
||||||
// forward with key or button
|
// forward with key or button
|
||||||
axis = JoyAxis(AXISMOVE);
|
axis = JoyAxis(AXISMOVE);
|
||||||
if (PLAYER1INPUTDOWN(gc_forward) || (gamepadjoystickmove && axis < 0))
|
if (movefkey || (gamepadjoystickmove && axis < 0))
|
||||||
forward = forwardmove[speed];
|
forward = forwardmove[speed];
|
||||||
if (PLAYER1INPUTDOWN(gc_backward) || (gamepadjoystickmove && axis > 0))
|
if (movebkey || (gamepadjoystickmove && axis > 0))
|
||||||
forward -= forwardmove[speed];
|
forward -= forwardmove[speed];
|
||||||
|
|
||||||
if (analogjoystickmove && axis != 0)
|
if (analogjoystickmove && axis != 0)
|
||||||
|
@ -1100,9 +1106,9 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
||||||
|
|
||||||
// some people strafe left & right with mouse buttons
|
// some people strafe left & right with mouse buttons
|
||||||
// those people are weird
|
// those people are weird
|
||||||
if (PLAYER1INPUTDOWN(gc_straferight))
|
if (straferkey)
|
||||||
side += sidemove[speed];
|
side += sidemove[speed];
|
||||||
if (PLAYER1INPUTDOWN(gc_strafeleft))
|
if (strafelkey)
|
||||||
side -= sidemove[speed];
|
side -= sidemove[speed];
|
||||||
|
|
||||||
if (PLAYER1INPUTDOWN(gc_weaponnext))
|
if (PLAYER1INPUTDOWN(gc_weaponnext))
|
||||||
|
@ -1239,7 +1245,8 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
||||||
|
|
||||||
// No additional acceleration when moving forward/backward and strafing simultaneously.
|
// No additional acceleration when moving forward/backward and strafing simultaneously.
|
||||||
// do this AFTER we cap to MAXPLMOVE so people can't find ways to cheese around this.
|
// do this AFTER we cap to MAXPLMOVE so people can't find ways to cheese around this.
|
||||||
if (!forcestrafe && forward && side)
|
// 9-18-2017: ALSO, only do this when using keys to move. Gamepad analog sticks get severely gimped by this
|
||||||
|
if (!forcestrafe && (((movefkey || movebkey) && side) || ((strafelkey || straferkey) && forward)))
|
||||||
{
|
{
|
||||||
forward = FixedMul(forward, 3*FRACUNIT/4);
|
forward = FixedMul(forward, 3*FRACUNIT/4);
|
||||||
side = FixedMul(side, 3*FRACUNIT/4);
|
side = FixedMul(side, 3*FRACUNIT/4);
|
||||||
|
|
Loading…
Reference in a new issue