Fix Alternate Title Screen unlockable not saving preference

- Remove CV_NOSHOWHELP, so the config file can load
- Do not stealth set the cvar, so it is not dependent on
  order of operations of config loading and challenge
  loading
This commit is contained in:
James R 2024-03-03 22:20:12 -08:00
parent f26b7bc7f7
commit 5fbb32442b
10 changed files with 18 additions and 30 deletions

View file

@ -301,10 +301,7 @@ consvar_t cv_addons_search_case = Player("addons_search_case", "No").yes_no();
consvar_t cv_addons_search_type = Player("addons_search_type", "Anywhere").values({{0, "Start"}, {1, "Anywhere"}});
consvar_t cv_addons_showall = Player("addons_showall", "No").yes_no();
consvar_t cv_allowguests = Player("allowguests", "On").on_off();
void AltTitle_OnChange(void);
consvar_t cv_alttitle = Player("alttitle", "Off").flags(CV_NOSHOWHELP).on_off().onchange_noinit(AltTitle_OnChange);
consvar_t cv_alttitle = Player("alttitle", "Off").on_off();
consvar_t cv_alwaysgrabmouse = GraphicsDriver("alwaysgrabmouse", "Off").on_off();
consvar_t cv_apng_delay = Player("apng_speed", "1x").values({

View file

@ -5195,19 +5195,6 @@ FUNCNORETURN static ATTRNORETURN void Command_Quit_f(void)
I_Quit();
}
void AltTitle_OnChange(void)
{
if (!cv_alttitle.value)
return; // it's fine.
if (!M_SecretUnlocked(SECRET_ALTTITLE, true))
{
CONS_Printf(M_GetText("You haven't earned this yet.\n"));
CV_StealthSetValue(&cv_alttitle, 0);
return;
}
}
void ItemFinder_OnChange(void)
{
if (!cv_itemfinder.value)

View file

@ -110,7 +110,7 @@ typedef enum {
} capsuletest_val_t;
extern consvar_t cv_capsuletest;
extern consvar_t cv_alttitle, cv_itemfinder;
extern consvar_t cv_itemfinder;
extern consvar_t cv_inttime, cv_advancemap;
extern consvar_t cv_overtime;
@ -255,7 +255,6 @@ boolean IsPlayerAdmin(INT32 playernum);
void SetAdminPlayer(INT32 playernum);
void ClearAdminPlayers(void);
void RemoveAdminPlayer(INT32 playernum);
void AltTitle_OnChange(void);
void ItemFinder_OnChange(void);
void D_SetPassword(const char *pw);

View file

@ -1145,13 +1145,8 @@ static void F_CacheTitleScreen(void)
case TTMODE_RINGRACERS:
{
if (!M_SecretUnlocked(SECRET_ALTTITLE, true))
{
CV_StealthSetValue(&cv_alttitle, 0);
}
kts_bumper = W_CachePatchName(
(cv_alttitle.value ? "KTSJUMPR1" : "KTSBUMPR1"),
(M_UseAlternateTitleScreen() ? "KTSJUMPR1" : "KTSBUMPR1"),
PU_PATCH_LOWPRIORITY);
kts_eggman = W_CachePatchName("KTSEGG01", PU_PATCH_LOWPRIORITY);
kts_tails = W_CachePatchName("KTSTAL01", PU_PATCH_LOWPRIORITY);

View file

@ -1023,7 +1023,7 @@ static void F_DrawCreditsTitleDrop(void)
0, -BASEVIDHEIGHT * (FRACUNIT / 2),
FRACUNIT, 0,
static_cast<patch_t *>(W_CachePatchName(
(cv_alttitle.value ? "KTSJUMPR1" : "KTSBUMPR1"),
(M_UseAlternateTitleScreen() ? "KTSJUMPR1" : "KTSBUMPR1"),
PU_CACHE
)),
nullptr

View file

@ -5998,7 +5998,7 @@ void K_drawKartHUD(void)
if (demo.attract == DEMO_ATTRACT_TITLE) // Draw logo on title screen demos
{
INT32 x = BASEVIDWIDTH - 8, y = BASEVIDHEIGHT-8, snapflags = V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_SLIDEIN;
patch_t *pat = static_cast<patch_t*>(W_CachePatchName((cv_alttitle.value ? "MTSJUMPR1" : "MTSBUMPR1"), PU_CACHE));
patch_t *pat = static_cast<patch_t*>(W_CachePatchName((M_UseAlternateTitleScreen() ? "MTSJUMPR1" : "MTSBUMPR1"), PU_CACHE));
if (r_splitscreen == 3)
{

View file

@ -7014,7 +7014,7 @@ static void M_DrawChallengePreview(INT32 x, INT32 y)
{
x = 8;
y = BASEVIDHEIGHT-16;
V_DrawGamemodeString(x, y - 33, 0, R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_PLAGUE, GTC_MENUCACHE), cv_alttitle.string);
V_DrawGamemodeString(x, y - 33, 0, R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_PLAGUE, GTC_MENUCACHE), M_UseAlternateTitleScreen() ? "On" : "Off");
K_drawButtonAnim(x, y, 0, kp_button_a[1], challengesmenu.ticker);
x += SHORT(kp_button_a[1][0]->width);
@ -8202,7 +8202,7 @@ void M_DrawWrongWarp(void)
titleoffset += titlewidth;
}
patch_t *bumper = W_CachePatchName((cv_alttitle.value ? "MTSJUMPR1" : "MTSBUMPR1"), PU_CACHE);
patch_t *bumper = W_CachePatchName((M_UseAlternateTitleScreen() ? "MTSJUMPR1" : "MTSBUMPR1"), PU_CACHE);
V_DrawScaledPatch(x-(SHORT(bumper->width)), (BASEVIDHEIGHT-8)-(SHORT(bumper->height)), 0, bumper);
}

View file

@ -3758,3 +3758,9 @@ const char *M_GetEmblemPatch(emblem_t *em, boolean big)
return pnamebuf;
}
boolean M_UseAlternateTitleScreen(void)
{
extern consvar_t cv_alttitle;
return cv_alttitle.value && M_SecretUnlocked(SECRET_ALTTITLE, true);
}

View file

@ -494,6 +494,8 @@ UINT16 M_EmblemMapNum(emblem_t *emblem);
#define M_Achieved(a) ((a) >= MAXCONDITIONSETS || gamedata->achieved[a])
boolean M_UseAlternateTitleScreen(void);
#ifdef __cplusplus
} // extern "C"
#endif

View file

@ -1027,11 +1027,13 @@ boolean M_ChallengesInputs(INT32 ch)
{
switch (unlockables[challengesmenu.currentunlock].type)
{
case SECRET_ALTTITLE:
case SECRET_ALTTITLE: {
extern consvar_t cv_alttitle;
CV_AddValue(&cv_alttitle, 1);
S_StartSound(NULL, sfx_s3kc3s);
M_SetMenuDelay(pid);
break;
}
default:
break;
}