diff --git a/source/core/gameinput.cpp b/source/core/gameinput.cpp index 60dde8ba4..abf235326 100644 --- a/source/core/gameinput.cpp +++ b/source/core/gameinput.cpp @@ -113,11 +113,9 @@ void resetTurnHeldAmt() // //--------------------------------------------------------------------------- -void processMovement(HIDInput* const hidInput, InputPacket* const inputBuffer, InputPacket* const currInput, const double scaleAdjust, const InputOptions& inputOpts) +void processMovement(HIDInput* const hidInput, InputPacket* const inputBuffer, InputPacket* const currInput, const double scaleAdjust, const int drink_amt, const bool allowstrafe, const double turnscale) { // set up variables. - const bool allowstrafe = isDukeEngine() ? true : inputOpts.first; - const double turnscale = inputOpts.second; const int keymove = 1 << int(!!(inputBuffer->actions & SB_RUN)); const float hidspeed = float(getTicrateScale(YAW_TURNSPEEDS[2]) * turnscale); const float scaleAdjustf = float(scaleAdjust); @@ -151,8 +149,8 @@ void processMovement(HIDInput* const hidInput, InputPacket* const inputBuffer, I currInput->svel += strafing * keymove * allowstrafe; // process RR's drunk state. - if (isRR() && inputOpts.first) - currInput->svel += inputOpts.first & 1 ? -currInput->fvel : currInput->fvel; + if (isRR() && drink_amt >= 66 && drink_amt <= 87) + currInput->svel += drink_amt & 1 ? -currInput->fvel : currInput->fvel; // add collected input to game's local input accumulation packet. inputBuffer->fvel = clamp(inputBuffer->fvel + currInput->fvel, -(float)keymove, (float)keymove); @@ -181,12 +179,11 @@ void getInput(const double scaleAdjust, PlayerAngles* const plrAngles, InputPack return; } - const auto inputOpts = gi->GetInputOptions(); InputPacket input{}; HIDInput hidInput{}; getHidInput(&hidInput); ApplyGlobalInput(&hidInput, &inputBuffer); - gi->GetInput(&hidInput, &inputBuffer, &input, !SyncInput() ? scaleAdjust : 1., inputOpts); + gi->GetInput(&hidInput, &inputBuffer, &input, !SyncInput() ? scaleAdjust : 1.); // Directly update the camera angles if we're unsynchronised. if (!SyncInput()) diff --git a/source/core/gamestruct.h b/source/core/gamestruct.h index 5d01278fc..1dbea4441 100644 --- a/source/core/gamestruct.h +++ b/source/core/gamestruct.h @@ -19,8 +19,7 @@ class DCoreActor; struct MapRecord; struct PlayerAngles; -using InputOptions = std::pair; -void processMovement(HIDInput* const hidInput, InputPacket* const inputBuffer, InputPacket* const currInput, const double scaleAdjust, const InputOptions& inputOpts); +void processMovement(HIDInput* const hidInput, InputPacket* const inputBuffer, InputPacket* const currInput, const double scaleAdjust, const int drink_amt = 0, const bool allowstrafe = true, const double turnscale = 1.); struct GameStats { @@ -91,8 +90,7 @@ struct GameInterface virtual void DrawPlayerSprite(const DVector2& origin, bool onteam) {} virtual void SetAmbience(bool on) {} virtual void ExitFromMenu() { throw CExitEvent(0); } - virtual void GetInput(HIDInput* const hidInput, InputPacket* const inputBuffer, InputPacket* const currInput, const double scaleAdjust, const InputOptions& inputOpts) { processMovement(hidInput, inputBuffer, currInput, scaleAdjust, inputOpts); } - virtual InputOptions GetInputOptions() { return std::make_pair(true, 1.); } + virtual void GetInput(HIDInput* const hidInput, InputPacket* const inputBuffer, InputPacket* const currInput, const double scaleAdjust) { processMovement(hidInput, inputBuffer, currInput, scaleAdjust); } virtual void UpdateSounds() {} virtual void ErrorCleanup() {} virtual void Startup() {} diff --git a/source/games/duke/src/duke3d.h b/source/games/duke/src/duke3d.h index 446e5c6bb..060d8bed0 100644 --- a/source/games/duke/src/duke3d.h +++ b/source/games/duke/src/duke3d.h @@ -39,8 +39,7 @@ struct GameInterface : public ::GameInterface void SerializeGameState(FSerializer& arc) override; void ExitFromMenu() override; void DrawPlayerSprite(const DVector2& origin, bool onteam) override; - void GetInput(HIDInput* const hidInput, InputPacket* const inputBuffer, InputPacket* const currInput, const double scaleAdjust, const InputOptions& inputOpts) override; - InputOptions GetInputOptions() override { return std::make_pair(ps[myconnectindex].drink_amt >= 66 && ps[myconnectindex].drink_amt <= 87, 1.); } + void GetInput(HIDInput* const hidInput, InputPacket* const inputBuffer, InputPacket* const currInput, const double scaleAdjust) override; void UpdateSounds() override; void Startup() override; void DrawBackground() override; diff --git a/source/games/duke/src/input.cpp b/source/games/duke/src/input.cpp index 91a06ccc2..fc17a7727 100644 --- a/source/games/duke/src/input.cpp +++ b/source/games/duke/src/input.cpp @@ -745,7 +745,7 @@ static void processVehicleInput(player_struct *p, HIDInput* const hidInput, Inpu // //--------------------------------------------------------------------------- -void GameInterface::GetInput(HIDInput* const hidInput, InputPacket* const inputBuffer, InputPacket* const currInput, const double scaleAdjust, const InputOptions& inputOpts) +void GameInterface::GetInput(HIDInput* const hidInput, InputPacket* const inputBuffer, InputPacket* const currInput, const double scaleAdjust) { auto const p = &ps[myconnectindex]; @@ -755,7 +755,7 @@ void GameInterface::GetInput(HIDInput* const hidInput, InputPacket* const inputB } else { - processMovement(hidInput, inputBuffer, currInput, scaleAdjust, inputOpts); + processMovement(hidInput, inputBuffer, currInput, scaleAdjust, p->drink_amt); } } diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index 119a90ff3..e8160e584 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -1866,7 +1866,7 @@ struct GameInterface : public ::GameInterface void SetAmbience(bool on) override { if (on) StartAmbientSound(); else StopAmbientSound(); } void UpdateSounds() override; void ErrorCleanup() override; - InputOptions GetInputOptions() override { return std::make_pair(!Player[myconnectindex].sop, Player[myconnectindex].sop_control ? 3. / 1.40625 : 1.); } + void GetInput(HIDInput* const hidInput, InputPacket* const inputBuffer, InputPacket* const currInput, const double scaleAdjust) override { processMovement(hidInput, inputBuffer, currInput, scaleAdjust, 0, Player[myconnectindex].sop, Player[myconnectindex].sop_control ? 3. / 1.40625 : 1.); } void DrawBackground(void) override; void Ticker(void) override; void Render() override;