diff --git a/source/exhumed/src/exhumed.cpp b/source/exhumed/src/exhumed.cpp index e8895195b..ecebaf455 100644 --- a/source/exhumed/src/exhumed.cpp +++ b/source/exhumed/src/exhumed.cpp @@ -730,7 +730,6 @@ short screensize; short bSnakeCam = kFalse; short bRecord = kFalse; short bPlayback = kFalse; -short bPause = kFalse; short bInDemo = kFalse; short bSlipMode = kFalse; short bDoFlashes = kTrue; @@ -1012,26 +1011,8 @@ void CheckKeys() return; } - if (inputState.GetKeyStatus(sc_Pause)) + if (paused) { - if (!nNetPlayerCount) - { - if (bPause) - { - ototalclock = totalclock = tclocks; - bPause = kFalse; - } - else - { - bPause = kTrue; - // NoClip(); - // int nLen = MyGetStringWidth("PAUSED"); - // myprintext((320 - nLen) / 2, 100, "PAUSED", 0); - // Clip(); - // videoNextPage(); - } - inputState.ClearKeyStatus(sc_Pause); - } return; } @@ -1463,7 +1444,7 @@ void G_Polymer_UnInit(void) { } static inline int32_t calc_smoothratio(ClockTicks totalclk, ClockTicks ototalclk) { - if (bRecord || bPlayback || nFreeze != 0 || bCamera || bPause) + if (bRecord || bPlayback || nFreeze != 0 || bCamera || paused) return 65536; return CalcSmoothRatio(totalclk, ototalclk, 30); @@ -1525,7 +1506,7 @@ static void GameDisplay(void) DrawView(smoothRatio); - if (bPause) + if (paused && !M_Active()) { int nLen = MyGetStringWidth("PAUSED"); myprintext((320 - nLen) / 2, 100, "PAUSED", 0); @@ -2214,6 +2195,7 @@ GAMELOOP: } // TODO CONTROL_GetButtonInput(); + updatePauseStatus(); CheckKeys(); if (bRecord || bPlayback) @@ -2279,12 +2261,12 @@ GAMELOOP: else { // loc_11FBC: - while (bPause) + while (paused) { inputState.ClearAllInput(); if (WaitAnyKey(-1) != sc_Pause) { - bPause = kFalse; + paused = kFalse; } } } @@ -2332,7 +2314,7 @@ GAMELOOP: { bInMove = kTrue; - if (M_Active() || GUICapture || bPause) + if (paused) { tclocks = totalclock - 4; buttonMap.ResetButtonStates(); @@ -3267,7 +3249,7 @@ int DoSpiritHead() bool GameInterface::CanSave() { - return !bRecord && !bPlayback && !bPause && !bInDemo && nTotalPlayers == 1; + return !bRecord && !bPlayback && !paused && !bInDemo && nTotalPlayers == 1; } void GameInterface::UpdateScreenSize() diff --git a/source/exhumed/src/player.cpp b/source/exhumed/src/player.cpp index 753d29632..3b56e4ca2 100644 --- a/source/exhumed/src/player.cpp +++ b/source/exhumed/src/player.cpp @@ -159,6 +159,18 @@ void PlayerInterruptKeys() ControlInfo info; memset(&info, 0, sizeof(ControlInfo)); // this is done within CONTROL_GetInput() anyway CONTROL_GetInput(&info); + + static double lastInputTicks; + auto const currentHiTicks = timerGetHiTicks(); + double const elapsedInputTicks = currentHiTicks - lastInputTicks; + + lastInputTicks = currentHiTicks; + + auto scaleAdjustmentToInterval = [=](double x) { return x * (120 / 4) / (1000.0 / elapsedInputTicks); }; + + if (paused) + return; + D_ProcessEvents(); localInput = {}; @@ -207,14 +219,6 @@ void PlayerInterruptKeys() input.xVel -= info.dx * keyMove / analogExtent; input.yVel -= info.dz * keyMove / analogExtent; - static double lastInputTicks; - auto const currentHiTicks = timerGetHiTicks(); - double const elapsedInputTicks = currentHiTicks - lastInputTicks; - - lastInputTicks = currentHiTicks; - - auto scaleAdjustmentToInterval = [=](double x) { return x * (120 / 4) / (1000.0 / elapsedInputTicks); }; - if (buttonMap.ButtonDown(gamefunc_Strafe)) { if (buttonMap.ButtonDown(gamefunc_Turn_Left))