Rework gamespeed cvar handling a little bit.

- Make the menu-only dummykartspeed and dummygpdifficulty cvars also affected by the unlock system.
- Master mode is currently behind SECRET_HARDSPEED, this can be changed later when we're seriously thinking about unlock progression.
- Complete forwardport of changes to cv_kartspeed from 1.4+, since I missed a spot previously.
This commit is contained in:
toaster 2022-09-04 14:56:07 +01:00
parent 1abfb2745a
commit 6544e95c01
4 changed files with 26 additions and 15 deletions

View file

@ -82,6 +82,13 @@ CV_PossibleValue_t kartspeed_cons_t[] = {
{KARTSPEED_HARD, "Hard"}, {KARTSPEED_HARD, "Hard"},
{0, NULL} {0, NULL}
}; };
CV_PossibleValue_t gpdifficulty_cons_t[] = {
{KARTSPEED_EASY, "Easy"},
{KARTSPEED_NORMAL, "Normal"},
{KARTSPEED_HARD, "Hard"},
{KARTGP_MASTER, "Master"},
{0, NULL}
};
// Filter consvars by EXECVERSION // Filter consvars by EXECVERSION
// First implementation is 2 (1.0.2), so earlier configs default at 1 (1.0.0) // First implementation is 2 (1.0.2), so earlier configs default at 1 (1.0.0)
@ -1804,6 +1811,15 @@ static void CV_SetCVar(consvar_t *var, const char *value, boolean stealth)
return; return;
} }
if (var == &cv_kartspeed && !M_SecretUnlocked(SECRET_HARDSPEED))
{
if (!stricmp(value, "Hard") || atoi(value) >= KARTSPEED_HARD)
{
CONS_Printf(M_GetText("You haven't unlocked this yet!\n"));
return;
}
}
if (var == &cv_forceskin) if (var == &cv_forceskin)
{ {
INT32 skin = R_SkinAvailable(value); INT32 skin = R_SkinAvailable(value);
@ -2082,9 +2098,14 @@ void CV_AddValue(consvar_t *var, INT32 increment)
return; return;
} }
} }
else if (var == &cv_kartspeed) else if (var->PossibleValue == kartspeed_cons_t || var->PossibleValue == gpdifficulty_cons_t)
{ {
max = (M_SecretUnlocked(SECRET_HARDSPEED) ? 3 : 2); if (!M_SecretUnlocked(SECRET_HARDSPEED))
{
max = KARTSPEED_NORMAL+1;
if (var->PossibleValue == kartspeed_cons_t)
max++; // Accommodate KARTSPEED_AUTO
}
} }
#ifdef PARANOIA #ifdef PARANOIA
if (currentindice == -1) if (currentindice == -1)

View file

@ -175,7 +175,7 @@ extern CV_PossibleValue_t CV_Natural[];
#define KARTSPEED_NORMAL 1 #define KARTSPEED_NORMAL 1
#define KARTSPEED_HARD 2 #define KARTSPEED_HARD 2
#define KARTGP_MASTER 3 // Not a speed setting, gives the hardest speed with maxed out bots #define KARTGP_MASTER 3 // Not a speed setting, gives the hardest speed with maxed out bots
extern CV_PossibleValue_t kartspeed_cons_t[]; extern CV_PossibleValue_t kartspeed_cons_t[], gpdifficulty_cons_t[];
extern consvar_t cv_execversion; extern consvar_t cv_execversion;

View file

@ -5812,13 +5812,6 @@ static void KartFrantic_OnChange(void)
static void KartSpeed_OnChange(void) static void KartSpeed_OnChange(void)
{ {
if (!M_SecretUnlocked(SECRET_HARDSPEED) && cv_kartspeed.value == KARTSPEED_HARD)
{
CONS_Printf(M_GetText("You haven't earned this yet.\n"));
CV_StealthSet(&cv_kartspeed, cv_kartspeed.defaultvalue);
return;
}
if (K_CanChangeRules() == false) if (K_CanChangeRules() == false)
{ {
return; return;

View file

@ -187,9 +187,6 @@ static CV_PossibleValue_t dummyscramble_cons_t[] = {{0, "Random"}, {1, "Points"}
static CV_PossibleValue_t dummystaff_cons_t[] = {{0, "MIN"}, {100, "MAX"}, {0, NULL}}; static CV_PossibleValue_t dummystaff_cons_t[] = {{0, "MIN"}, {100, "MAX"}, {0, NULL}};
static CV_PossibleValue_t dummygametype_cons_t[] = {{0, "Race"}, {1, "Battle"}, {0, NULL}}; static CV_PossibleValue_t dummygametype_cons_t[] = {{0, "Race"}, {1, "Battle"}, {0, NULL}};
static CV_PossibleValue_t dummygpdifficulty_cons_t[] = {{0, "Easy"}, {1, "Normal"}, {2, "Hard"}, {3, "Master"}, {0, NULL}};
static CV_PossibleValue_t dummykartspeed_cons_t[] = {{-1, "Auto"}, {0, "Easy"}, {1, "Normal"}, {2, "Hard"}, {0, NULL}};
//static consvar_t cv_dummymenuplayer = CVAR_INIT ("dummymenuplayer", "P1", CV_HIDDEN|CV_CALL, dummymenuplayer_cons_t, Dummymenuplayer_OnChange); //static consvar_t cv_dummymenuplayer = CVAR_INIT ("dummymenuplayer", "P1", CV_HIDDEN|CV_CALL, dummymenuplayer_cons_t, Dummymenuplayer_OnChange);
static consvar_t cv_dummyteam = CVAR_INIT ("dummyteam", "Spectator", CV_HIDDEN, dummyteam_cons_t, NULL); static consvar_t cv_dummyteam = CVAR_INIT ("dummyteam", "Spectator", CV_HIDDEN, dummyteam_cons_t, NULL);
//static cv_dummyspectate = CVAR_INITconsvar_t ("dummyspectate", "Spectator", CV_HIDDEN, dummyspectate_cons_t, NULL); //static cv_dummyspectate = CVAR_INITconsvar_t ("dummyspectate", "Spectator", CV_HIDDEN, dummyspectate_cons_t, NULL);
@ -204,8 +201,8 @@ consvar_t cv_dummyprofilename = CVAR_INIT ("dummyprofilename", "", CV_HIDDEN, NU
consvar_t cv_dummyprofileplayername = CVAR_INIT ("dummyprofileplayername", "", CV_HIDDEN, NULL, NULL); consvar_t cv_dummyprofileplayername = CVAR_INIT ("dummyprofileplayername", "", CV_HIDDEN, NULL, NULL);
consvar_t cv_dummyprofilekickstart = CVAR_INIT ("dummyprofilekickstart", "Off", CV_HIDDEN, CV_OnOff, NULL); consvar_t cv_dummyprofilekickstart = CVAR_INIT ("dummyprofilekickstart", "Off", CV_HIDDEN, CV_OnOff, NULL);
consvar_t cv_dummygpdifficulty = CVAR_INIT ("dummygpdifficulty", "Normal", CV_HIDDEN, dummygpdifficulty_cons_t, NULL); consvar_t cv_dummygpdifficulty = CVAR_INIT ("dummygpdifficulty", "Normal", CV_HIDDEN, gpdifficulty_cons_t, NULL);
consvar_t cv_dummykartspeed = CVAR_INIT ("dummykartspeed", "Auto", CV_HIDDEN, dummykartspeed_cons_t, NULL); consvar_t cv_dummykartspeed = CVAR_INIT ("dummykartspeed", "Auto", CV_HIDDEN, kartspeed_cons_t, NULL);
consvar_t cv_dummygpencore = CVAR_INIT ("dummygpencore", "No", CV_HIDDEN, CV_YesNo, NULL); consvar_t cv_dummygpencore = CVAR_INIT ("dummygpencore", "No", CV_HIDDEN, CV_YesNo, NULL);
static void M_UpdateAddonsSearch(void); static void M_UpdateAddonsSearch(void);