mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
failedtutorialchallenge -> enteredtutorialchallenge
Track ENTERING the challenge, instead of when you fail it Allows for system-level ironclad prevention against multiple tutorial challenge runs on the same gamedata
This commit is contained in:
parent
224d584203
commit
ce085c3f66
3 changed files with 12 additions and 9 deletions
17
src/g_game.c
17
src/g_game.c
|
|
@ -4207,7 +4207,8 @@ static void G_DoCompleted(void)
|
||||||
if (tutorialchallenge == TUTORIALSKIP_INPROGRESS)
|
if (tutorialchallenge == TUTORIALSKIP_INPROGRESS)
|
||||||
{
|
{
|
||||||
if (
|
if (
|
||||||
players[consoleplayer].position != 1
|
!legitimateexit
|
||||||
|
|| players[consoleplayer].position != 1
|
||||||
|| !players[consoleplayer].exiting
|
|| !players[consoleplayer].exiting
|
||||||
|| (players[consoleplayer].pflags & PF_NOCONTEST)
|
|| (players[consoleplayer].pflags & PF_NOCONTEST)
|
||||||
)
|
)
|
||||||
|
|
@ -4216,8 +4217,6 @@ static void G_DoCompleted(void)
|
||||||
tutorialchallenge = TUTORIALSKIP_FAILED;
|
tutorialchallenge = TUTORIALSKIP_FAILED;
|
||||||
G_SetGametype(GT_TUTORIAL);
|
G_SetGametype(GT_TUTORIAL);
|
||||||
nextmapoverride = prevmap+1;
|
nextmapoverride = prevmap+1;
|
||||||
|
|
||||||
gamedata->failedtutorialchallenge = true;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -4312,6 +4311,7 @@ void G_NextLevel(void)
|
||||||
if (
|
if (
|
||||||
gametype == GT_TUTORIAL
|
gametype == GT_TUTORIAL
|
||||||
&& nextmap == NEXTMAP_TUTORIALCHALLENGE
|
&& nextmap == NEXTMAP_TUTORIALCHALLENGE
|
||||||
|
&& !(gamedata && gamedata->enteredtutorialchallenge)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
nextmap = G_MapNumber(tutorialchallengemap);
|
nextmap = G_MapNumber(tutorialchallengemap);
|
||||||
|
|
@ -4323,6 +4323,9 @@ void G_NextLevel(void)
|
||||||
{
|
{
|
||||||
tutorialchallenge = TUTORIALSKIP_INPROGRESS;
|
tutorialchallenge = TUTORIALSKIP_INPROGRESS;
|
||||||
G_SetGametype(G_GuessGametypeByTOL(mapheaderinfo[nextmap]->typeoflevel));
|
G_SetGametype(G_GuessGametypeByTOL(mapheaderinfo[nextmap]->typeoflevel));
|
||||||
|
|
||||||
|
gamedata->enteredtutorialchallenge = true;
|
||||||
|
// A gamedata save will happen on successful level enter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4529,7 +4532,7 @@ typedef enum
|
||||||
GDEVER_KEYTUTORIAL = 1<<4,
|
GDEVER_KEYTUTORIAL = 1<<4,
|
||||||
GDEVER_KEYMAJORSKIP = 1<<5,
|
GDEVER_KEYMAJORSKIP = 1<<5,
|
||||||
GDEVER_TUTORIALSKIP = 1<<6,
|
GDEVER_TUTORIALSKIP = 1<<6,
|
||||||
GDEVER_FAILEDTUTSKIP = 1<<7,
|
GDEVER_ENTERTUTSKIP = 1<<7,
|
||||||
} gdeverdone_t;
|
} gdeverdone_t;
|
||||||
|
|
||||||
static const char *G_GameDataFolder(void)
|
static const char *G_GameDataFolder(void)
|
||||||
|
|
@ -4670,7 +4673,7 @@ void G_LoadGameData(void)
|
||||||
gamedata->chaokeytutorial = !!(everflags & GDEVER_KEYTUTORIAL);
|
gamedata->chaokeytutorial = !!(everflags & GDEVER_KEYTUTORIAL);
|
||||||
gamedata->majorkeyskipattempted = !!(everflags & GDEVER_KEYMAJORSKIP);
|
gamedata->majorkeyskipattempted = !!(everflags & GDEVER_KEYMAJORSKIP);
|
||||||
gamedata->finishedtutorialchallenge = !!(everflags & GDEVER_TUTORIALSKIP);
|
gamedata->finishedtutorialchallenge = !!(everflags & GDEVER_TUTORIALSKIP);
|
||||||
gamedata->failedtutorialchallenge = !!(everflags & GDEVER_FAILEDTUTSKIP);
|
gamedata->enteredtutorialchallenge = !!(everflags & GDEVER_ENTERTUTSKIP);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -5364,8 +5367,8 @@ void G_SaveGameData(void)
|
||||||
everflags |= GDEVER_KEYMAJORSKIP;
|
everflags |= GDEVER_KEYMAJORSKIP;
|
||||||
if (gamedata->finishedtutorialchallenge)
|
if (gamedata->finishedtutorialchallenge)
|
||||||
everflags |= GDEVER_TUTORIALSKIP;
|
everflags |= GDEVER_TUTORIALSKIP;
|
||||||
if (gamedata->failedtutorialchallenge)
|
if (gamedata->enteredtutorialchallenge)
|
||||||
everflags |= GDEVER_FAILEDTUTSKIP;
|
everflags |= GDEVER_ENTERTUTSKIP;
|
||||||
|
|
||||||
WRITEUINT32(save.p, everflags); // 4
|
WRITEUINT32(save.p, everflags); // 4
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -661,8 +661,8 @@ void M_ClearStats(void)
|
||||||
gamedata->evercrashed = false;
|
gamedata->evercrashed = false;
|
||||||
gamedata->chaokeytutorial = false;
|
gamedata->chaokeytutorial = false;
|
||||||
gamedata->majorkeyskipattempted = false;
|
gamedata->majorkeyskipattempted = false;
|
||||||
|
gamedata->enteredtutorialchallenge = false;
|
||||||
gamedata->finishedtutorialchallenge = false;
|
gamedata->finishedtutorialchallenge = false;
|
||||||
gamedata->failedtutorialchallenge = false;
|
|
||||||
gamedata->musicstate = GDMUSIC_NONE;
|
gamedata->musicstate = GDMUSIC_NONE;
|
||||||
|
|
||||||
gamedata->importprofilewins = false;
|
gamedata->importprofilewins = false;
|
||||||
|
|
|
||||||
|
|
@ -364,8 +364,8 @@ struct gamedata_t
|
||||||
boolean evercrashed;
|
boolean evercrashed;
|
||||||
boolean chaokeytutorial;
|
boolean chaokeytutorial;
|
||||||
boolean majorkeyskipattempted;
|
boolean majorkeyskipattempted;
|
||||||
|
boolean enteredtutorialchallenge;
|
||||||
boolean finishedtutorialchallenge;
|
boolean finishedtutorialchallenge;
|
||||||
boolean failedtutorialchallenge;
|
|
||||||
gdmusic_t musicstate;
|
gdmusic_t musicstate;
|
||||||
|
|
||||||
// BACKWARDS COMPAT ASSIST
|
// BACKWARDS COMPAT ASSIST
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue