mirror of
https://github.com/ZDoom/Raze.git
synced 2025-01-31 04:20:42 +00:00
Exhumed: Amend how game pauses.
This commit is contained in:
parent
33b6b85d57
commit
ce48f081fc
2 changed files with 20 additions and 34 deletions
|
@ -730,7 +730,6 @@ short screensize;
|
||||||
short bSnakeCam = kFalse;
|
short bSnakeCam = kFalse;
|
||||||
short bRecord = kFalse;
|
short bRecord = kFalse;
|
||||||
short bPlayback = kFalse;
|
short bPlayback = kFalse;
|
||||||
short bPause = kFalse;
|
|
||||||
short bInDemo = kFalse;
|
short bInDemo = kFalse;
|
||||||
short bSlipMode = kFalse;
|
short bSlipMode = kFalse;
|
||||||
short bDoFlashes = kTrue;
|
short bDoFlashes = kTrue;
|
||||||
|
@ -1012,26 +1011,8 @@ void CheckKeys()
|
||||||
return;
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1463,7 +1444,7 @@ void G_Polymer_UnInit(void) { }
|
||||||
|
|
||||||
static inline int32_t calc_smoothratio(ClockTicks totalclk, ClockTicks ototalclk)
|
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 65536;
|
||||||
|
|
||||||
return CalcSmoothRatio(totalclk, ototalclk, 30);
|
return CalcSmoothRatio(totalclk, ototalclk, 30);
|
||||||
|
@ -1525,7 +1506,7 @@ static void GameDisplay(void)
|
||||||
|
|
||||||
DrawView(smoothRatio);
|
DrawView(smoothRatio);
|
||||||
|
|
||||||
if (bPause)
|
if (paused && !M_Active())
|
||||||
{
|
{
|
||||||
int nLen = MyGetStringWidth("PAUSED");
|
int nLen = MyGetStringWidth("PAUSED");
|
||||||
myprintext((320 - nLen) / 2, 100, "PAUSED", 0);
|
myprintext((320 - nLen) / 2, 100, "PAUSED", 0);
|
||||||
|
@ -2214,6 +2195,7 @@ GAMELOOP:
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO CONTROL_GetButtonInput();
|
// TODO CONTROL_GetButtonInput();
|
||||||
|
updatePauseStatus();
|
||||||
CheckKeys();
|
CheckKeys();
|
||||||
|
|
||||||
if (bRecord || bPlayback)
|
if (bRecord || bPlayback)
|
||||||
|
@ -2279,12 +2261,12 @@ GAMELOOP:
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// loc_11FBC:
|
// loc_11FBC:
|
||||||
while (bPause)
|
while (paused)
|
||||||
{
|
{
|
||||||
inputState.ClearAllInput();
|
inputState.ClearAllInput();
|
||||||
if (WaitAnyKey(-1) != sc_Pause)
|
if (WaitAnyKey(-1) != sc_Pause)
|
||||||
{
|
{
|
||||||
bPause = kFalse;
|
paused = kFalse;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2332,7 +2314,7 @@ GAMELOOP:
|
||||||
{
|
{
|
||||||
bInMove = kTrue;
|
bInMove = kTrue;
|
||||||
|
|
||||||
if (M_Active() || GUICapture || bPause)
|
if (paused)
|
||||||
{
|
{
|
||||||
tclocks = totalclock - 4;
|
tclocks = totalclock - 4;
|
||||||
buttonMap.ResetButtonStates();
|
buttonMap.ResetButtonStates();
|
||||||
|
@ -3267,7 +3249,7 @@ int DoSpiritHead()
|
||||||
|
|
||||||
bool GameInterface::CanSave()
|
bool GameInterface::CanSave()
|
||||||
{
|
{
|
||||||
return !bRecord && !bPlayback && !bPause && !bInDemo && nTotalPlayers == 1;
|
return !bRecord && !bPlayback && !paused && !bInDemo && nTotalPlayers == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameInterface::UpdateScreenSize()
|
void GameInterface::UpdateScreenSize()
|
||||||
|
|
|
@ -159,6 +159,18 @@ void PlayerInterruptKeys()
|
||||||
ControlInfo info;
|
ControlInfo info;
|
||||||
memset(&info, 0, sizeof(ControlInfo)); // this is done within CONTROL_GetInput() anyway
|
memset(&info, 0, sizeof(ControlInfo)); // this is done within CONTROL_GetInput() anyway
|
||||||
CONTROL_GetInput(&info);
|
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();
|
D_ProcessEvents();
|
||||||
|
|
||||||
localInput = {};
|
localInput = {};
|
||||||
|
@ -207,14 +219,6 @@ void PlayerInterruptKeys()
|
||||||
input.xVel -= info.dx * keyMove / analogExtent;
|
input.xVel -= info.dx * keyMove / analogExtent;
|
||||||
input.yVel -= info.dz * 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_Strafe))
|
||||||
{
|
{
|
||||||
if (buttonMap.ButtonDown(gamefunc_Turn_Left))
|
if (buttonMap.ButtonDown(gamefunc_Turn_Left))
|
||||||
|
|
Loading…
Reference in a new issue