Merge branch 'menu-dribdrabs' into 'master'

Menu Dribdrabs

See merge request KartKrew/Kart!982
This commit is contained in:
Oni 2023-02-27 07:04:02 +00:00
commit 3a0c72e7c0
9 changed files with 152 additions and 53 deletions

View file

@ -650,6 +650,7 @@ struct setup_player_t
UINT16 color; UINT16 color;
UINT8 mdepth; UINT8 mdepth;
boolean hitlag; boolean hitlag;
boolean showextra;
// Hack, save player 1's original device even if they init charsel with keyboard. // Hack, save player 1's original device even if they init charsel with keyboard.
// If they play ALONE, allow them to retain that original device, otherwise, ignore this. // If they play ALONE, allow them to retain that original device, otherwise, ignore this.
@ -1158,6 +1159,8 @@ extern struct challengesmenu_s {
boolean pending; boolean pending;
boolean requestnew; boolean requestnew;
boolean requestflip;
UINT8 unlockcount[CC_MAX]; UINT8 unlockcount[CC_MAX];
UINT8 fade; UINT8 fade;

View file

@ -1366,6 +1366,8 @@ static void M_DrawCharSelectPreview(UINT8 num)
M_DrawCharSelectCircle(p, x+32, y+64); M_DrawCharSelectCircle(p, x+32, y+64);
} }
if (p->showextra == false)
{
V_DrawScaledPatch(x+9, y+2, 0, W_CachePatchName("FILEBACK", PU_CACHE)); V_DrawScaledPatch(x+9, y+2, 0, W_CachePatchName("FILEBACK", PU_CACHE));
V_DrawScaledPatch(x, y+2, 0, W_CachePatchName(va("CHARSEL%c", letter), PU_CACHE)); V_DrawScaledPatch(x, y+2, 0, W_CachePatchName(va("CHARSEL%c", letter), PU_CACHE));
if (p->mdepth > CSSTEP_PROFILE) if (p->mdepth > CSSTEP_PROFILE)
@ -1377,6 +1379,7 @@ static void M_DrawCharSelectPreview(UINT8 num)
{ {
V_DrawFileString(x+16, y+2, 0, "PLAYER"); V_DrawFileString(x+16, y+2, 0, "PLAYER");
} }
}
if (p->mdepth >= CSSTEP_FOLLOWER) if (p->mdepth >= CSSTEP_FOLLOWER)
{ {
@ -1474,6 +1477,82 @@ static void M_DrawCharSelectPreview(UINT8 num)
V_DrawThinString(xpos+16, cy, (p->changeselect == i ? highlightflags : 0)|V_6WIDTHSPACE, choices[i]); V_DrawThinString(xpos+16, cy, (p->changeselect == i ? highlightflags : 0)|V_6WIDTHSPACE, choices[i]);
} }
} }
if (p->showextra == true)
{
switch (p->mdepth)
{
case CSSTEP_CHARS: // Character Select grid
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("Speed %u - Weight %u", p->gridx+1, p->gridy+1));
break;
case CSSTEP_ALTS: // Select clone
case CSSTEP_READY:
if (p->clonenum < setup_chargrid[p->gridx][p->gridy].numskins
&& setup_chargrid[p->gridx][p->gridy].skinlist[p->clonenum] < numskins)
{
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE,
skins[setup_chargrid[p->gridx][p->gridy].skinlist[p->clonenum]].name);
}
else
{
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("BAD CLONENUM %u", p->clonenum));
}
break;
case CSSTEP_COLORS: // Select color
if (p->color < numskincolors)
{
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, skincolors[p->color].name);
}
else
{
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("BAD COLOR %u", p->color));
}
break;
case CSSTEP_FOLLOWERCATEGORY:
if (p->followercategory == -1)
{
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "None");
}
else
{
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE,
followercategories[setup_followercategories[p->followercategory][1]].name);
}
break;
case CSSTEP_FOLLOWER:
if (p->followern == -1)
{
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "None");
}
else
{
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE,
followers[p->followern].name);
}
break;
case CSSTEP_FOLLOWERCOLORS:
if (p->followercolor == FOLLOWERCOLOR_MATCH)
{
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "Match");
}
else if (p->followercolor == FOLLOWERCOLOR_OPPOSITE)
{
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "Opposite");
}
else if (p->followercolor < numskincolors)
{
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, skincolors[p->followercolor].name);
}
else
{
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("BAD FOLLOWERCOLOR %u", p->followercolor));
}
break;
default:
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "[extrainfo mode]");
break;
}
}
} }
static void M_DrawCharSelectExplosions(boolean charsel, INT16 basex, INT16 basey) static void M_DrawCharSelectExplosions(boolean charsel, INT16 basex, INT16 basey)

View file

@ -175,6 +175,7 @@ menu_t *M_InterruptMenuWithChallenges(menu_t *desiredmenu)
if (challengesmenu.pending || desiredmenu == NULL) if (challengesmenu.pending || desiredmenu == NULL)
{ {
challengesmenu.ticker = 0; challengesmenu.ticker = 0;
challengesmenu.requestflip = false;
challengesmenu.requestnew = false; challengesmenu.requestnew = false;
challengesmenu.currentunlock = MAXUNLOCKABLES; challengesmenu.currentunlock = MAXUNLOCKABLES;
challengesmenu.unlockcondition = NULL; challengesmenu.unlockcondition = NULL;
@ -287,7 +288,7 @@ void M_ChallengesTick(void)
if (challengesmenu.extradata != NULL) if (challengesmenu.extradata != NULL)
{ {
UINT16 id = (challengesmenu.hilix * CHALLENGEGRIDHEIGHT) + challengesmenu.hiliy; UINT16 id = (challengesmenu.hilix * CHALLENGEGRIDHEIGHT) + challengesmenu.hiliy;
boolean seeeveryone = M_MenuButtonHeld(pid, MBT_R); boolean seeeveryone = challengesmenu.requestflip;
boolean allthewaythrough; boolean allthewaythrough;
UINT8 maxflip; UINT8 maxflip;
for (i = 0; i < (CHALLENGEGRIDHEIGHT * gamedata->challengegridwidth); i++) for (i = 0; i < (CHALLENGEGRIDHEIGHT * gamedata->challengegridwidth); i++)
@ -479,8 +480,17 @@ boolean M_ChallengesInputs(INT32 ch)
return true; return true;
} }
if (M_MenuButtonPressed(pid, MBT_R))
{
challengesmenu.requestflip ^= true;
return true;
}
if (challengesmenu.extradata != NULL && move) if (challengesmenu.extradata != NULL && move)
{ {
challengesmenu.requestflip = false;
// Determine movement around the grid // Determine movement around the grid
// For right/down movement, we can pre-determine the number of steps based on extradata. // For right/down movement, we can pre-determine the number of steps based on extradata.
// For left/up movement, we can't - we have to be ready to iterate twice, and break early if we don't run into a large tile. // For left/up movement, we can't - we have to be ready to iterate twice, and break early if we don't run into a large tile.

View file

@ -7,7 +7,7 @@
menuitem_t OPTIONS_Data[] = menuitem_t OPTIONS_Data[] =
{ {
{IT_STRING | IT_SUBMENU, "Screenshot Options...", "Set options relative to screenshot and GIF capture.", {IT_STRING | IT_SUBMENU, "Media Options...", "Set options relative to screenshot and movie capture.",
NULL, {.submenu = &OPTIONS_DataScreenshotDef}, 0, 0}, NULL, {.submenu = &OPTIONS_DataScreenshotDef}, 0, 0},
{IT_STRING | IT_SUBMENU, "Addon Options...", "Set options relative to the addons menu.", {IT_STRING | IT_SUBMENU, "Addon Options...", "Set options relative to the addons menu.",

View file

@ -8,7 +8,7 @@ menuitem_t OPTIONS_DataReplay[] =
{IT_STRING | IT_CVAR, "Record Replays", "Select when to save replays.", {IT_STRING | IT_CVAR, "Record Replays", "Select when to save replays.",
NULL, {.cvar = &cv_recordmultiplayerdemos}, 0, 0}, NULL, {.cvar = &cv_recordmultiplayerdemos}, 0, 0},
{IT_STRING | IT_CVAR, "Synch. Check Interval", "How often to check for synchronization while playing back a replay.", {IT_STRING | IT_CVAR, "Net Consistency Quality", "For filesize, how often do we write position data in online replays?",
NULL, {.cvar = &cv_netdemosyncquality}, 0, 0}, NULL, {.cvar = &cv_netdemosyncquality}, 0, 0},
}; };

View file

@ -3,6 +3,7 @@
#include "../k_menu.h" #include "../k_menu.h"
#include "../m_misc.h" // screenshot cvars #include "../m_misc.h" // screenshot cvars
#include "../m_avrecorder.h"
menuitem_t OPTIONS_DataScreenshot[] = menuitem_t OPTIONS_DataScreenshot[] =
{ {
@ -19,13 +20,19 @@ menuitem_t OPTIONS_DataScreenshot[] =
{IT_SPACE | IT_NOTHING, NULL, NULL, {IT_SPACE | IT_NOTHING, NULL, NULL,
NULL, {NULL}, 0, 0}, NULL, {NULL}, 0, 0},
{IT_HEADER, "GIF RECORDING (F9)", NULL, {IT_HEADER, "MOVIE RECORDING (F9)", NULL,
NULL, {NULL}, 0, 0}, NULL, {NULL}, 0, 0},
{IT_STRING | IT_CVAR, "Storage Location", "Sets where to store GIFs", {IT_STRING | IT_CVAR, "Recording Format", "What file format will movies will be recorded in?",
NULL, {.cvar = &cv_moviemode}, 0, 0},
{IT_STRING | IT_CVAR, "Real-Time Data", "If enabled, shows fps, duration and filesize of recording in real-time.",
NULL, {.cvar = &cv_movie_showfps}, 0, 0},
{IT_STRING | IT_CVAR, "Storage Location", "Sets where to store movies.",
NULL, {.cvar = &cv_movie_option}, 0, 0}, NULL, {.cvar = &cv_movie_option}, 0, 0},
{IT_STRING | IT_CVAR | IT_CV_STRING, "Custom Folder", "Specify which folder to save GIFs in.", {IT_STRING | IT_CVAR | IT_CV_STRING, "Custom Folder", "Specify which folder to save videos in.",
NULL, {.cvar = &cv_movie_folder}, 24, 0}, NULL, {.cvar = &cv_movie_folder}, 24, 0},
}; };
@ -56,6 +63,10 @@ void Screenshot_option_Onchange(void)
void Moviemode_mode_Onchange(void) void Moviemode_mode_Onchange(void)
{ {
// opt 7 in a 0 based array, you get the idea...
OPTIONS_DataScreenshot[6].status =
(cv_moviemode.value == MM_AVRECORDER ? IT_CVAR|IT_STRING : IT_DISABLED);
#if 0 #if 0
INT32 i, cstart, cend; INT32 i, cstart, cend;
for (i = op_screenshot_gif_start; i <= op_screenshot_apng_end; ++i) for (i = op_screenshot_gif_start; i <= op_screenshot_apng_end; ++i)
@ -81,7 +92,7 @@ void Moviemode_mode_Onchange(void)
void Moviemode_option_Onchange(void) void Moviemode_option_Onchange(void)
{ {
// opt 7 in a 0 based array, you get the idea... // opt 9 in a 0 based array, you get the idea...
OPTIONS_DataScreenshot[6].status = OPTIONS_DataScreenshot[8].status =
(cv_movie_option.value == 3 ? IT_CVAR|IT_STRING|IT_CV_STRING : IT_DISABLED); (cv_movie_option.value == 3 ? IT_CVAR|IT_STRING|IT_CV_STRING : IT_DISABLED);
} }

View file

@ -7,44 +7,45 @@
menuitem_t OPTIONS_GameplayItems[] = menuitem_t OPTIONS_GameplayItems[] =
{ {
// Mostly handled by the drawing function. // Mostly handled by the drawing function.
{IT_KEYHANDLER | IT_NOTHING, NULL, "Super Rings", NULL, {.routine = M_HandleItemToggles}, KITEM_SUPERRING, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Super Ring", NULL, {.routine = M_HandleItemToggles}, KITEM_SUPERRING, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Self-Propelled Bombs", NULL, {.routine = M_HandleItemToggles}, KITEM_SPB, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Self-Propelled Bomb", NULL, {.routine = M_HandleItemToggles}, KITEM_SPB, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Eggman Marks", NULL, {.routine = M_HandleItemToggles}, KITEM_EGGMAN, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, NULL, NULL, {.routine = M_HandleItemToggles}, 255, 0}, // maybe KITEM_PUYO eventually?
{IT_KEYHANDLER | IT_NOTHING, NULL, "Toggle All", NULL, {.routine = M_HandleItemToggles}, 0, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Toggle All", NULL, {.routine = M_HandleItemToggles}, 0, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Sneakers", NULL, {.routine = M_HandleItemToggles}, KITEM_SNEAKER, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Sneaker", NULL, {.routine = M_HandleItemToggles}, KITEM_SNEAKER, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Sneakers x2", NULL, {.routine = M_HandleItemToggles}, KRITEM_DUALSNEAKER, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Sneaker x2", NULL, {.routine = M_HandleItemToggles}, KRITEM_DUALSNEAKER, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Sneakers x3", NULL, {.routine = M_HandleItemToggles}, KRITEM_TRIPLESNEAKER, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Sneaker x3", NULL, {.routine = M_HandleItemToggles}, KRITEM_TRIPLESNEAKER, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Rocket Sneakers", NULL, {.routine = M_HandleItemToggles}, KITEM_ROCKETSNEAKER, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Rocket Sneaker", NULL, {.routine = M_HandleItemToggles}, KITEM_ROCKETSNEAKER, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Bananas", NULL, {.routine = M_HandleItemToggles}, KITEM_BANANA, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Banana", NULL, {.routine = M_HandleItemToggles}, KITEM_BANANA, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Bananas x3", NULL, {.routine = M_HandleItemToggles}, KRITEM_TRIPLEBANANA, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Banana x3", NULL, {.routine = M_HandleItemToggles}, KRITEM_TRIPLEBANANA, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Proximity Mines", NULL, {.routine = M_HandleItemToggles}, KITEM_MINE, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Eggman Mark", NULL, {.routine = M_HandleItemToggles}, KITEM_EGGMAN, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Gachabom", NULL, {.routine = M_HandleItemToggles}, KITEM_GACHABOM, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Orbinauts", NULL, {.routine = M_HandleItemToggles}, KITEM_ORBINAUT, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Orbinaut", NULL, {.routine = M_HandleItemToggles}, KITEM_ORBINAUT, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Orbinauts x3", NULL, {.routine = M_HandleItemToggles}, KRITEM_TRIPLEORBINAUT, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Orbinaut x3", NULL, {.routine = M_HandleItemToggles}, KRITEM_TRIPLEORBINAUT, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Orbinauts x4", NULL, {.routine = M_HandleItemToggles}, KRITEM_QUADORBINAUT, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Orbinaut x4", NULL, {.routine = M_HandleItemToggles}, KRITEM_QUADORBINAUT, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Land Mines", NULL, {.routine = M_HandleItemToggles}, KITEM_LANDMINE, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Gachabom x3", NULL, {.routine = M_HandleItemToggles}, KRITEM_TRIPLEGACHABOM, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Jawz", NULL, {.routine = M_HandleItemToggles}, KITEM_JAWZ, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Jawz", NULL, {.routine = M_HandleItemToggles}, KITEM_JAWZ, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Jawz x2", NULL, {.routine = M_HandleItemToggles}, KRITEM_DUALJAWZ, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Jawz x2", NULL, {.routine = M_HandleItemToggles}, KRITEM_DUALJAWZ, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Ballhogs", NULL, {.routine = M_HandleItemToggles}, KITEM_BALLHOG, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Proximity Mine", NULL, {.routine = M_HandleItemToggles}, KITEM_MINE, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Drop Targets", NULL, {.routine = M_HandleItemToggles}, KITEM_DROPTARGET, sfx_s258}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Ballhog", NULL, {.routine = M_HandleItemToggles}, KITEM_BALLHOG, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Lightning Shields", NULL, {.routine = M_HandleItemToggles}, KITEM_LIGHTNINGSHIELD, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Hyudoro", NULL, {.routine = M_HandleItemToggles}, KITEM_HYUDORO, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Bubble Shields", NULL, {.routine = M_HandleItemToggles}, KITEM_BUBBLESHIELD, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Drop Target", NULL, {.routine = M_HandleItemToggles}, KITEM_DROPTARGET, sfx_s258},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Flame Shields", NULL, {.routine = M_HandleItemToggles}, KITEM_FLAMESHIELD, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Land Mine", NULL, {.routine = M_HandleItemToggles}, KITEM_LANDMINE, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Hyudoros", NULL, {.routine = M_HandleItemToggles}, KITEM_HYUDORO, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Pogo Spring", NULL, {.routine = M_HandleItemToggles}, KITEM_POGOSPRING, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Invinciblity", NULL, {.routine = M_HandleItemToggles}, KITEM_INVINCIBILITY, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Invinciblity", NULL, {.routine = M_HandleItemToggles}, KITEM_INVINCIBILITY, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Grow", NULL, {.routine = M_HandleItemToggles}, KITEM_GROW, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Grow", NULL, {.routine = M_HandleItemToggles}, KITEM_GROW, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Shrink", NULL, {.routine = M_HandleItemToggles}, KITEM_SHRINK, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Shrink", NULL, {.routine = M_HandleItemToggles}, KITEM_SHRINK, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, NULL, NULL, {.routine = M_HandleItemToggles}, 255, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Gardentop", NULL, {.routine = M_HandleItemToggles}, KITEM_GARDENTOP, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Pogo Springs", NULL, {.routine = M_HandleItemToggles}, KITEM_POGOSPRING, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Lightning Shield", NULL, {.routine = M_HandleItemToggles}, KITEM_LIGHTNINGSHIELD, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Kitchen Sinks", NULL, {.routine = M_HandleItemToggles}, KITEM_KITCHENSINK, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Bubble Shield", NULL, {.routine = M_HandleItemToggles}, KITEM_BUBBLESHIELD, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, NULL, NULL, {.routine = M_HandleItemToggles}, 255, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Flame Shield", NULL, {.routine = M_HandleItemToggles}, KITEM_FLAMESHIELD, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, NULL, NULL, {.routine = M_HandleItemToggles}, 255, 0} {IT_KEYHANDLER | IT_NOTHING, NULL, "Kitchen Sink", NULL, {.routine = M_HandleItemToggles}, KITEM_KITCHENSINK, 0}
}; };
menu_t OPTIONS_GameplayItemsDef = { menu_t OPTIONS_GameplayItemsDef = {

View file

@ -905,16 +905,6 @@ static boolean M_HandleCharacterGrid(setup_player_t *p, UINT8 num)
if (num == 0 && setup_numplayers == 1 && setup_maxpage && !forceskin) // ONLY one player. if (num == 0 && setup_numplayers == 1 && setup_maxpage && !forceskin) // ONLY one player.
{ {
if (M_MenuButtonPressed(num, MBT_L)) if (M_MenuButtonPressed(num, MBT_L))
{
if (setup_page == 0)
setup_page = setup_maxpage;
else
setup_page--;
S_StartSound(NULL, sfx_s3k63);
M_SetMenuDelay(num);
}
else if (M_MenuButtonPressed(num, MBT_R))
{ {
if (setup_page == setup_maxpage) if (setup_page == setup_maxpage)
setup_page = 0; setup_page = 0;
@ -1295,6 +1285,11 @@ boolean M_CharacterSelectHandler(INT32 choice)
if (i > 0 && setup_player[i-1].mdepth < CSSTEP_READY) if (i > 0 && setup_player[i-1].mdepth < CSSTEP_READY)
continue; continue;
} }
if (M_MenuButtonPressed(i, MBT_R))
{
p->showextra ^= true;
}
} }
switch (p->mdepth) switch (p->mdepth)

View file

@ -59,7 +59,7 @@ void M_SetupGametypeMenu(INT32 choice)
if (!anyunlocked) if (!anyunlocked)
{ {
// Only one non-Back entry, let's skip straight to Race. // Only one non-Back entry, let's skip straight to Race.
M_SetupRaceMenu(-1); M_SetupRaceMenu(0);
return; return;
} }
} }