diff --git a/source/core/gameinput.cpp b/source/core/gameinput.cpp index 170233cd2..9cd87b092 100644 --- a/source/core/gameinput.cpp +++ b/source/core/gameinput.cpp @@ -119,8 +119,8 @@ void processMovement(InputPacket* const currInput, InputPacket* const inputBuffe // determine player input. const auto turning = buttonMap.ButtonDown(gamefunc_Turn_Right) - buttonMap.ButtonDown(gamefunc_Turn_Left); - const auto moving = buttonMap.ButtonDown(gamefunc_Move_Forward) - buttonMap.ButtonDown(gamefunc_Move_Backward) + hidInput->dz * scaleAdjustf; - const auto strafing = buttonMap.ButtonDown(gamefunc_Strafe_Right) - buttonMap.ButtonDown(gamefunc_Strafe_Left) - hidInput->dx * scaleAdjustf; + const auto moving = buttonMap.ButtonDown(gamefunc_Move_Forward) - buttonMap.ButtonDown(gamefunc_Move_Backward) + hidInput->dforward * scaleAdjustf; + const auto strafing = buttonMap.ButtonDown(gamefunc_Strafe_Right) - buttonMap.ButtonDown(gamefunc_Strafe_Left) - hidInput->dside * scaleAdjustf; // process player angle input. if (!(buttonMap.ButtonDown(gamefunc_Strafe) && allowstrafe)) diff --git a/source/core/inputstate.cpp b/source/core/inputstate.cpp index e340ada4b..b548311fe 100644 --- a/source/core/inputstate.cpp +++ b/source/core/inputstate.cpp @@ -215,9 +215,9 @@ ControlInfo CONTROL_GetInput() I_GetAxes(joyaxes); hidInput.dyaw += -joyaxes[JOYAXIS_Yaw]; - hidInput.dx += joyaxes[JOYAXIS_Side] * .5f; - hidInput.dz += joyaxes[JOYAXIS_Forward] * .5f; hidInput.dpitch += -joyaxes[JOYAXIS_Pitch]; + hidInput.dforward += joyaxes[JOYAXIS_Forward] * .5f; + hidInput.dside += joyaxes[JOYAXIS_Side] * .5f; } return hidInput; @@ -405,18 +405,18 @@ void ApplyGlobalInput(InputPacket& input, ControlInfo* hidInput, bool const crou if (hidInput && buttonMap.ButtonDown(gamefunc_Dpad_Select)) { // These buttons should not autorepeat. The game handlers are not really equipped for that. - if (hidInput->dz > 0 && !(dpad_lock & 1)) { dpad_lock |= 1; input.setNewWeapon(WeaponSel_Prev); } + if (hidInput->dforward > 0 && !(dpad_lock & 1)) { dpad_lock |= 1; input.setNewWeapon(WeaponSel_Prev); } else dpad_lock &= ~1; - if (hidInput->dz < 0 && !(dpad_lock & 2)) { dpad_lock |= 2; input.setNewWeapon(WeaponSel_Next); } + if (hidInput->dforward < 0 && !(dpad_lock & 2)) { dpad_lock |= 2; input.setNewWeapon(WeaponSel_Next); } else dpad_lock &= ~2; - if ((hidInput->dx < 0 || hidInput->dyaw < 0) && !(dpad_lock & 4)) { dpad_lock |= 4; input.actions |= SB_INVPREV; } + if ((hidInput->dside < 0 || hidInput->dyaw < 0) && !(dpad_lock & 4)) { dpad_lock |= 4; input.actions |= SB_INVPREV; } else dpad_lock &= ~4; - if ((hidInput->dx > 0 || hidInput->dyaw > 0) && !(dpad_lock & 8)) { dpad_lock |= 8; input.actions |= SB_INVNEXT; } + if ((hidInput->dside > 0 || hidInput->dyaw > 0) && !(dpad_lock & 8)) { dpad_lock |= 8; input.actions |= SB_INVNEXT; } else dpad_lock &= ~8; // This eats the controller input for regular use - hidInput->dx = 0; - hidInput->dz = 0; + hidInput->dside = 0; + hidInput->dforward = 0; hidInput->dyaw = 0; } else dpad_lock = 0; @@ -424,14 +424,14 @@ void ApplyGlobalInput(InputPacket& input, ControlInfo* hidInput, bool const crou input.actions |= ActionsToSend; ActionsToSend = 0; - if (buttonMap.ButtonDown(gamefunc_Aim_Up) || (buttonMap.ButtonDown(gamefunc_Dpad_Aiming) && hidInput->dz > 0)) + if (buttonMap.ButtonDown(gamefunc_Aim_Up) || (buttonMap.ButtonDown(gamefunc_Dpad_Aiming) && hidInput->dforward > 0)) input.actions |= SB_AIM_UP; - if ((buttonMap.ButtonDown(gamefunc_Aim_Down) || (buttonMap.ButtonDown(gamefunc_Dpad_Aiming) && hidInput->dz < 0))) + if ((buttonMap.ButtonDown(gamefunc_Aim_Down) || (buttonMap.ButtonDown(gamefunc_Dpad_Aiming) && hidInput->dforward < 0))) input.actions |= SB_AIM_DOWN; if (buttonMap.ButtonDown(gamefunc_Dpad_Aiming)) - hidInput->dz = 0; + hidInput->dforward = 0; if (buttonMap.ButtonDown(gamefunc_Jump)) input.actions |= SB_JUMP; diff --git a/source/core/inputstate.h b/source/core/inputstate.h index 4782fb79f..568acdf6c 100644 --- a/source/core/inputstate.h +++ b/source/core/inputstate.h @@ -16,9 +16,9 @@ struct ControlInfo { - float dx; - float dy; - float dz; + float dside; + float dup; + float dforward; float dyaw; float dpitch; float droll; diff --git a/source/games/duke/src/input.cpp b/source/games/duke/src/input.cpp index d6508ff76..758bbd27a 100644 --- a/source/games/duke/src/input.cpp +++ b/source/games/duke/src/input.cpp @@ -582,7 +582,7 @@ static float motoApplyTurn(player_struct* p, ControlInfo* const hidInput, bool c if (kbdLeft || kbdRight || p->moto_drink || hidInput->mouseturnx || hidInput->dyaw) { constexpr float velScale = (3.f / 10.f); - const float baseVel = (buttonMap.ButtonDown(gamefunc_Move_Backward) || hidInput->dz < 0) && p->MotoSpeed <= 0 ? -VEHICLETURN : VEHICLETURN; + const float baseVel = (buttonMap.ButtonDown(gamefunc_Move_Backward) || hidInput->dforward < 0) && p->MotoSpeed <= 0 ? -VEHICLETURN : VEHICLETURN; if (kbdLeft || p->moto_drink < 0 || hidInput->mouseturnx < 0 || hidInput->dyaw < 0) { @@ -744,8 +744,8 @@ static void processVehicleInput(player_struct *p, ControlInfo* const hidInput, I if (p->OnBoat || !p->moto_underwater) { - p->vehForwardScale = min((buttonMap.ButtonDown(gamefunc_Move_Forward) || buttonMap.ButtonDown(gamefunc_Strafe)) + hidInput->dz, 1.f); - p->vehReverseScale = min(buttonMap.ButtonDown(gamefunc_Move_Backward) + -hidInput->dz, 1.f); + p->vehForwardScale = min((buttonMap.ButtonDown(gamefunc_Move_Forward) || buttonMap.ButtonDown(gamefunc_Strafe)) + hidInput->dforward, 1.f); + p->vehReverseScale = min(buttonMap.ButtonDown(gamefunc_Move_Backward) + -hidInput->dforward, 1.f); p->vehBraking = buttonMap.ButtonDown(gamefunc_Run); }