From 67390511b7ba00794c4a3190e0c71a724eba9672 Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Mon, 24 Apr 2023 19:02:11 +1000 Subject: [PATCH] - Blood: Hook up `InputPacket::uvel` to relevant code. --- source/games/blood/src/player.cpp | 17 +++++++++-------- source/games/blood/src/prediction.cpp | 8 ++++---- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/source/games/blood/src/player.cpp b/source/games/blood/src/player.cpp index 846494c89..22c6ef72c 100644 --- a/source/games/blood/src/player.cpp +++ b/source/games/blood/src/player.cpp @@ -1586,15 +1586,16 @@ void ProcessInput(PLAYER* pPlayer) processCrouchToggle(pPlayer->crouch_toggle, pInput->actions, pPlayer->posture != kPostureSwim, pPlayer->posture == kPostureSwim); switch (pPlayer->posture) { - case 1: - if (pInput->actions & SB_JUMP) - actor->vel.Z -= pPosture->normalJumpZ;//0x5b05; - if (pInput->actions & SB_CROUCH) - actor->vel.Z += pPosture->normalJumpZ;//0x5b05; + case kPostureSwim: + { + const auto kbdDir = !!(pInput->actions & SB_JUMP) - !!(pInput->actions & SB_CROUCH); + const double dist = pPosture->normalJumpZ; + actor->vel.Z -= clamp(dist * kbdDir + dist * pInput->uvel, -dist, dist); break; - case 2: + } + case kPostureCrouch: if (!(pInput->actions & SB_CROUCH)) - pPlayer->posture = 0; + pPlayer->posture = kPostureStand; break; default: if (!pPlayer->cantJump && (pInput->actions & SB_JUMP) && actor->xspr.height == 0) { @@ -1609,7 +1610,7 @@ void ProcessInput(PLAYER* pPlayer) } if (pInput->actions & SB_CROUCH) - pPlayer->posture = 2; + pPlayer->posture = kPostureCrouch; break; } if (pInput->actions & SB_OPEN) diff --git a/source/games/blood/src/prediction.cpp b/source/games/blood/src/prediction.cpp index 4a93b4775..c39d04bd9 100644 --- a/source/games/blood/src/prediction.cpp +++ b/source/games/blood/src/prediction.cpp @@ -179,15 +179,15 @@ static void fakeProcessInput(PLAYER* pPlayer, InputPacket* pInput) switch (predict.posture) { - case 1: + case kPostureSwim: if (predict.jump) predict.zvel -= pPosture->normalJumpZ;//0x5b05; if (pInput->actions & SB_CROUCH) predict.zvel += pPosture->normalJumpZ;//0x5b05; break; - case 2: + case kPostureCrouch: if (!(pInput->actions & SB_CROUCH)) - predict.posture = 0; + predict.posture = kPostureStand; break; default: if (!predict.cantJump && predict.jump && predict.floordist == 0) { @@ -196,7 +196,7 @@ static void fakeProcessInput(PLAYER* pPlayer, InputPacket* pInput) predict.cantJump = 1; } if (pInput->actions & SB_CROUCH) - predict.posture = 2; + predict.posture = kPostureCrouch; break; }