mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-24 00:42:32 +00:00
More things use the menu map selection rules
* G_GetFirstMapOfGametype now uses the menu functions instead of repeating the effort * GTR_NOCUPSELECT - allows gametypes to opt out of cup selection
This commit is contained in:
parent
ed85fb2e79
commit
b9f18ffc24
3 changed files with 16 additions and 17 deletions
|
|
@ -502,6 +502,8 @@ enum GameTypeRules
|
|||
GTR_LIVES = 1<<18, // Lives system, players are forced to spectate during Game Over.
|
||||
GTR_SPECIALBOTS = 1<<19, // Bot difficulty gets stronger between rounds, and the rival system is enabled.
|
||||
|
||||
GTR_NOCUPSELECT = 1<<20, // Your maps are not selected via cup. ...mutually exclusive with GTR_CAMPAIGN.
|
||||
|
||||
// free: to and including 1<<31
|
||||
};
|
||||
|
||||
|
|
|
|||
29
src/g_game.c
29
src/g_game.c
|
|
@ -3416,29 +3416,26 @@ UINT32 G_TOLFlag(INT32 pgametype)
|
|||
|
||||
INT16 G_GetFirstMapOfGametype(UINT8 pgametype)
|
||||
{
|
||||
UINT8 i = 0;
|
||||
INT16 mapnum = NEXTMAP_INVALID;
|
||||
UINT32 tol = G_TOLFlag(pgametype);
|
||||
|
||||
if ((gametypedefaultrules[pgametype] & GTR_CAMPAIGN) && kartcupheaders)
|
||||
{
|
||||
mapnum = kartcupheaders->cachedlevels[0];
|
||||
}
|
||||
levellist.cupmode = (!(gametypedefaultrules[pgametype] & GTR_NOCUPSELECT));
|
||||
levellist.timeattack = false;
|
||||
|
||||
if (mapnum >= nummapheaders)
|
||||
if (levellist.cupmode)
|
||||
{
|
||||
UINT32 tolflag = G_TOLFlag(pgametype);
|
||||
for (mapnum = 0; mapnum < nummapheaders; mapnum++)
|
||||
cupheader_t *cup = kartcupheaders;
|
||||
while (cup && mapnum >= nummapheaders)
|
||||
{
|
||||
if (!mapheaderinfo[mapnum])
|
||||
continue;
|
||||
if (mapheaderinfo[mapnum]->lumpnum == LUMPERROR)
|
||||
continue;
|
||||
if (!(mapheaderinfo[mapnum]->typeoflevel & tolflag))
|
||||
continue;
|
||||
if (mapheaderinfo[mapnum]->menuflags & LF2_HIDEINMENU)
|
||||
continue;
|
||||
break;
|
||||
mapnum = M_GetFirstLevelInList(&i, tol, cup);
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mapnum = M_GetFirstLevelInList(&i, tol, NULL);
|
||||
}
|
||||
|
||||
return mapnum;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3475,7 +3475,7 @@ static void M_LevelListFromGametype(INT16 gt)
|
|||
{
|
||||
levellist.newgametype = gt;
|
||||
levellist.typeoflevel = G_TOLFlag(gt);
|
||||
levellist.cupmode = true; // todo some way to choose going direct to a long consecutive list..?
|
||||
levellist.cupmode = (!(gametypedefaultrules[gt] & GTR_NOCUPSELECT));
|
||||
levellist.selectedcup = NULL;
|
||||
first = false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue