mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-21 10:21:49 +00:00
Tweak display of hidden items in "1 Player" menu
If an option in the "1 Player" menu is unavailable in an add-on, lower the above options to close the gap from the invisible option Also make Marathon Run display as question marks if locked And also change "sploadgame" to "spstartgame"
This commit is contained in:
parent
8063814f1c
commit
5655db11ab
1 changed files with 39 additions and 13 deletions
52
src/m_menu.c
52
src/m_menu.c
|
@ -761,14 +761,14 @@ static menuitem_t SP_MainMenu[] =
|
|||
{IT_CALL | IT_STRING, NULL, "Start Game", M_LoadGame, 76},
|
||||
{IT_SECRET, NULL, "Record Attack", M_TimeAttack, 84},
|
||||
{IT_SECRET, NULL, "NiGHTS Mode", M_NightsAttack, 92},
|
||||
{IT_CALL | IT_STRING | IT_CALL_NOTMODIFIED, NULL, "Marathon Run", M_Marathon, 100},
|
||||
{IT_SECRET, NULL, "Marathon Run", M_Marathon, 100},
|
||||
{IT_CALL | IT_STRING, NULL, "Tutorial", M_StartTutorial, 108},
|
||||
{IT_CALL | IT_STRING | IT_CALL_NOTMODIFIED, NULL, "Statistics", M_Statistics, 116}
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
sploadgame,
|
||||
spstartgame,
|
||||
sprecordattack,
|
||||
spnightsmode,
|
||||
spmarathon,
|
||||
|
@ -8040,29 +8040,55 @@ static void M_SinglePlayerMenu(INT32 choice)
|
|||
{
|
||||
(void)choice;
|
||||
|
||||
|
||||
levellistmode = LLM_RECORDATTACK;
|
||||
if (M_GametypeHasLevels(-1))
|
||||
SP_MainMenu[sprecordattack].status = (M_SecretUnlocked(SECRET_RECORDATTACK)) ? IT_CALL|IT_STRING : IT_SECRET;
|
||||
else
|
||||
SP_MainMenu[sprecordattack].status = IT_NOTHING|IT_DISABLED;
|
||||
else // If Record Attack is nonexistent in the current add-on...
|
||||
{
|
||||
SP_MainMenu[sprecordattack].status = IT_NOTHING|IT_DISABLED; // ...hide and disable the Record Attack option...
|
||||
SP_MainMenu[spstartgame].alphaKey += 8; // ...and lower Start Game by 8 pixels to close the gap
|
||||
}
|
||||
|
||||
|
||||
levellistmode = LLM_NIGHTSATTACK;
|
||||
if (M_GametypeHasLevels(-1))
|
||||
SP_MainMenu[spnightsmode].status = (M_SecretUnlocked(SECRET_NIGHTSMODE)) ? IT_CALL|IT_STRING : IT_SECRET;
|
||||
else
|
||||
SP_MainMenu[spnightsmode].status = IT_NOTHING|IT_DISABLED;
|
||||
else // If NiGHTS Mode is nonexistent in the current add-on...
|
||||
{
|
||||
SP_MainMenu[spnightsmode].status = IT_NOTHING|IT_DISABLED; // ...hide and disable the NiGHTS Mode option...
|
||||
// ...and lower the above options' display positions by 8 pixels to close the gap
|
||||
SP_MainMenu[spstartgame] .alphaKey += 8;
|
||||
SP_MainMenu[sprecordattack].alphaKey += 8;
|
||||
}
|
||||
|
||||
SP_MainMenu[sptutorial].status = tutorialmap ? IT_CALL|IT_STRING : IT_NOTHING|IT_DISABLED;
|
||||
|
||||
// If the FIRST stage immediately leads to the ending, or itself (which gets converted to the title screen in G_DoCompleted for marathonmode only), there's no point in having this option on the menu. You should use Record Attack in that circumstance, although if marathonnext is set this behaviour can be overridden if you make some weird mod that requires multiple playthroughs of the same map in sequence and has some in-level mechanism to break the cycle.
|
||||
if (!M_SecretUnlocked(SECRET_RECORDATTACK) // also if record attack is locked
|
||||
|| (mapheaderinfo[spmarathon_start-1]
|
||||
if (mapheaderinfo[spmarathon_start-1]
|
||||
&& !mapheaderinfo[spmarathon_start-1]->marathonnext
|
||||
&& (mapheaderinfo[spmarathon_start-1]->nextlevel == spmarathon_start
|
||||
|| mapheaderinfo[spmarathon_start-1]->nextlevel >= 1100)))
|
||||
SP_MainMenu[spmarathon].status = IT_NOTHING|IT_DISABLED;
|
||||
else
|
||||
SP_MainMenu[spmarathon].status = IT_CALL|IT_STRING|IT_CALL_NOTMODIFIED;
|
||||
|| mapheaderinfo[spmarathon_start-1]->nextlevel >= 1100))
|
||||
{
|
||||
SP_MainMenu[spmarathon].status = IT_NOTHING|IT_DISABLED; // Hide and disable the Marathon Run option...
|
||||
// ...and lower the above options' display positions by 8 pixels to close the gap
|
||||
SP_MainMenu[spstartgame] .alphaKey += 8;
|
||||
SP_MainMenu[sprecordattack].alphaKey += 8;
|
||||
SP_MainMenu[spnightsmode] .alphaKey += 8;
|
||||
}
|
||||
else if (M_SecretUnlocked(SECRET_RECORDATTACK)) // Otherwise, if Marathon Run is allowed and Record Attack is unlocked...
|
||||
SP_MainMenu[spmarathon].status = IT_CALL|IT_STRING|IT_CALL_NOTMODIFIED; // ...unlock Marathon Run!
|
||||
|
||||
|
||||
if (!tutorialmap) // If there's no tutorial available in the current add-on...
|
||||
{
|
||||
SP_MainMenu[sptutorial].status = IT_NOTHING|IT_DISABLED; // ...hide and disable the Tutorial option...
|
||||
// ...and lower the above options' display positions by 8 pixels to close the gap
|
||||
SP_MainMenu[spstartgame] .alphaKey += 8;
|
||||
SP_MainMenu[sprecordattack].alphaKey += 8;
|
||||
SP_MainMenu[spnightsmode] .alphaKey += 8;
|
||||
SP_MainMenu[spmarathon] .alphaKey += 8;
|
||||
}
|
||||
|
||||
|
||||
M_SetupNextMenu(&SP_MainDef);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue