Prevent -speed from being overridden by game-speed keys (#1969)

This commit is contained in:
Alaux 2024-10-31 20:18:40 -03:00 committed by GitHub
parent 05a95e9a38
commit 3d8ec36807
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 41 additions and 41 deletions

View File

@ -2442,7 +2442,7 @@ void D_DoomMain(void)
R_UpdateViewAngleFunction();
WS_Init();
MN_ResetTimeScale();
G_SetTimeScale();
I_Printf(VB_INFO, "S_Init: Setting up sound.");
S_Init(snd_SfxVolume /* *8 */, snd_MusicVolume /* *8*/ );

View File

@ -423,6 +423,41 @@ static void G_DemoSkipTics(void)
}
}
void G_SetTimeScale(void)
{
if (strictmode || D_CheckNetConnect())
{
I_SetTimeScale(100);
return;
}
int time_scale = realtic_clock_rate;
//!
// @arg <n>
// @category game
//
// Increase or decrease game speed, percentage of normal.
//
int p = M_CheckParmWithArgs("-speed", 1);
if (p)
{
time_scale = M_ParmArgToInt(p);
if (time_scale < 10 || time_scale > 1000)
{
I_Error(
"Invalid parameter '%d' for -speed, valid values are 10-1000.",
time_scale);
}
}
I_SetTimeScale(time_scale);
setrefreshneeded = true;
}
static void ClearLocalView(void)
{
memset(&localview, 0, sizeof(localview));

View File

@ -78,6 +78,7 @@ void G_DoVictory(void);
int G_ValidateMapName(const char *mapname, int *pEpi, int *pMap);
void G_EnableWarp(boolean warp);
void G_SetTimeScale(void);
demo_version_t G_GetNamedComplevel(const char *arg);
const char *G_GetCurrentComplevelName(void);

View File

@ -2439,7 +2439,7 @@ boolean M_ShortcutResponder(const event_t *ev)
realtic_clock_rate += 10;
realtic_clock_rate = BETWEEN(10, 1000, realtic_clock_rate);
displaymsg("Game Speed: %d", realtic_clock_rate);
I_SetTimeScale(realtic_clock_rate);
G_SetTimeScale();
setrefreshneeded = true;
}
@ -2449,7 +2449,7 @@ boolean M_ShortcutResponder(const event_t *ev)
realtic_clock_rate -= 10;
realtic_clock_rate = BETWEEN(10, 1000, realtic_clock_rate);
displaymsg("Game Speed: %d", realtic_clock_rate);
I_SetTimeScale(realtic_clock_rate);
G_SetTimeScale();
setrefreshneeded = true;
}
@ -2458,7 +2458,7 @@ boolean M_ShortcutResponder(const event_t *ev)
{
realtic_clock_rate = 100;
displaymsg("Game Speed: %d", realtic_clock_rate);
I_SetTimeScale(realtic_clock_rate);
G_SetTimeScale();
setrefreshneeded = true;
}

View File

@ -67,7 +67,6 @@ void MN_UpdatePadLook(void);
void MN_UpdateAllGamepadItems(void);
void MN_UpdateEqualizerItems(void);
void MN_UpdateAdvancedSoundItems(boolean toggle);
void MN_ResetTimeScale(void);
void MN_SetHUFontKerning(void);
void MN_DisableVoxelsRenderingItem(void);
void MN_UpdateDynamicResolutionItem(void);

View File

@ -3290,41 +3290,6 @@ static const char *screen_melt_strings[] = {"Off", "Melt", "Crossfade", "Fizzle"
static const char *invul_mode_strings[] = {"Vanilla", "MBF", "Gray"};
void MN_ResetTimeScale(void)
{
if (strictmode || D_CheckNetConnect())
{
I_SetTimeScale(100);
return;
}
int time_scale = realtic_clock_rate;
//!
// @arg <n>
// @category game
//
// Increase or decrease game speed, percentage of normal.
//
int p = M_CheckParmWithArgs("-speed", 1);
if (p)
{
time_scale = M_ParmArgToInt(p);
if (time_scale < 10 || time_scale > 1000)
{
I_Error(
"Invalid parameter '%d' for -speed, valid values are 10-1000.",
time_scale);
}
}
I_SetTimeScale(time_scale);
setrefreshneeded = true;
}
static setup_menu_t gen_settings6[] = {
{"Quality of life", S_SKIP | S_TITLE, OFF_CNTR_X, M_SPC},
@ -3354,7 +3319,7 @@ static setup_menu_t gen_settings6[] = {
{"Miscellaneous", S_SKIP | S_TITLE, OFF_CNTR_X, M_SPC},
{"Game speed", S_NUM | S_STRICT | S_PCT, OFF_CNTR_X, M_SPC,
{"realtic_clock_rate"}, .action = MN_ResetTimeScale},
{"realtic_clock_rate"}, .action = G_SetTimeScale},
{"Default Skill", S_CHOICE | S_LEVWARN, OFF_CNTR_X, M_SPC,
{"default_skill"}, .strings_id = str_default_skill},