Revamp Item Toggles screen again

There was confusion in testing so I took it as a challenge to improve the menu further.
- Put `Toggle All` on `<c>` instead of an Item slot
- Put `Frantic Mode` on `<r>` since it's in the changelog but not surfaced in any menus right now
- No gaps (RIP free real estate)
This commit is contained in:
toaster 2025-08-19 15:19:39 +01:00
parent ca48b5092b
commit 66b7bf649a
2 changed files with 55 additions and 39 deletions

View file

@ -376,7 +376,7 @@ static void M_DrawMenuParty(void)
UINT16 color; UINT16 color;
UINT8 *colormap; UINT8 *colormap;
if (setup_numplayers == 0 || currentMenu == &PLAY_CharSelectDef || currentMenu == &MISC_ChallengesDef) if (setup_numplayers == 0 || currentMenu == &PLAY_CharSelectDef || currentMenu == &OPTIONS_GameplayItemsDef || currentMenu == &MISC_ChallengesDef)
{ {
return; return;
} }
@ -5714,11 +5714,11 @@ void M_DrawItemToggles(void)
static UINT8 black[256]; static UINT8 black[256];
memset(black, 16, 256); memset(black, 16, 256);
const INT32 edges = 9; const INT32 edges = 8;
const INT32 height = 4; const INT32 height = 4;
const INT32 spacing = 34; const INT32 spacing = 35;
const INT32 column = itemOn/height; const INT32 column = itemOn/height;
//const INT32 row = itemOn%height; const INT32 row = itemOn%height;
INT32 leftdraw, rightdraw, totaldraw; INT32 leftdraw, rightdraw, totaldraw;
INT32 x, y = currentMenu->y; INT32 x, y = currentMenu->y;
INT32 onx = 0, ony = 0; INT32 onx = 0, ony = 0;
@ -5774,14 +5774,6 @@ void M_DrawItemToggles(void)
} }
if (currentMenu->menuitems[thisitem].mvar1 == 0) if (currentMenu->menuitems[thisitem].mvar1 == 0)
{
V_DrawScaledPatch(x, y, 0, isbg);
V_DrawScaledPatch(x, y, 0, W_CachePatchName("K_ISTOGL", PU_CACHE));
y += spacing;
continue;
}
if (currentMenu->menuitems[thisitem].mvar1 == 255)
{ {
V_DrawScaledPatch(x, y, 0, isbgd); V_DrawScaledPatch(x, y, 0, isbgd);
y += spacing; y += spacing;
@ -5822,13 +5814,10 @@ void M_DrawItemToggles(void)
y = currentMenu->y; y = currentMenu->y;
} }
drawnum = 0;
{ {
if (currentMenu->menuitems[itemOn].mvar1 == 0) if (currentMenu->menuitems[itemOn].mvar1 == 0)
{
V_DrawScaledPatch(onx-1, ony-2, 0, W_CachePatchName("K_ITBG", PU_CACHE));
V_DrawScaledPatch(onx-1, ony-2, 0, W_CachePatchName("K_ITTOGL", PU_CACHE));
}
else if (currentMenu->menuitems[itemOn].mvar1 == 255)
{ {
V_DrawScaledPatch(onx-1, ony-2, 0, W_CachePatchName("K_ITBGD", PU_CACHE)); V_DrawScaledPatch(onx-1, ony-2, 0, W_CachePatchName("K_ITBGD", PU_CACHE));
if (shitsfree) if (shitsfree)
@ -5880,6 +5869,18 @@ void M_DrawItemToggles(void)
} }
} }
} }
// Button prompts
K_DrawGameControl(
(BASEVIDWIDTH/2) - cv_kartfrantic.value, BASEVIDHEIGHT-20, 0,
va(
"<c_animated> Toggle All %s<white> <r_animated> Frantic Mode: %s",
cv_thunderdome.value ? "<yellow>(Ring Box Mode) " : "<gold>(Item Box Mode)",
cv_kartfrantic.value ? "<red> On" : "<gray>Off"
),
1, TINY_FONT,
(((row == height-1) && (drawnum > 1)) ? V_TRANSLUCENT : 0)
);
} }

View file

@ -18,8 +18,8 @@ menuitem_t OPTIONS_GameplayItems[] =
// Mostly handled by the drawing function. // Mostly handled by the drawing function.
{IT_KEYHANDLER | IT_NOTHING, NULL, "Super Ring", 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 Bomb", 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, "Eggmark", NULL, {.routine = M_HandleItemToggles}, KITEM_EGGMAN, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Hyudoro", NULL, {.routine = M_HandleItemToggles}, KITEM_HYUDORO, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Toggle All / Ring Box Only", NULL, {.routine = M_HandleItemToggles}, 0, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Kitchen Sink", NULL, {.routine = M_HandleItemToggles}, KITEM_KITCHENSINK, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Sneaker", 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, "Sneaker x2", NULL, {.routine = M_HandleItemToggles}, KRITEM_DUALSNEAKER, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Sneaker x2", NULL, {.routine = M_HandleItemToggles}, KRITEM_DUALSNEAKER, 0},
@ -44,7 +44,7 @@ menuitem_t OPTIONS_GameplayItems[] =
{IT_KEYHANDLER | IT_NOTHING, NULL, "Toxomister", NULL, {.routine = M_HandleItemToggles}, KITEM_TOXOMISTER, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Toxomister", NULL, {.routine = M_HandleItemToggles}, KITEM_TOXOMISTER, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Drop Target", NULL, {.routine = M_HandleItemToggles}, KITEM_DROPTARGET, sfx_s258}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Drop Target", NULL, {.routine = M_HandleItemToggles}, KITEM_DROPTARGET, sfx_s258},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Land Mine", NULL, {.routine = M_HandleItemToggles}, KITEM_LANDMINE, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Land Mine", NULL, {.routine = M_HandleItemToggles}, KITEM_LANDMINE, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Hyudoro", NULL, {.routine = M_HandleItemToggles}, KITEM_HYUDORO, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Eggmark", NULL, {.routine = M_HandleItemToggles}, KITEM_EGGMAN, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Invincibility", NULL, {.routine = M_HandleItemToggles}, KITEM_INVINCIBILITY, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Invincibility", 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},
@ -56,10 +56,8 @@ menuitem_t OPTIONS_GameplayItems[] =
{IT_KEYHANDLER | IT_NOTHING, NULL, "Flame Shield", NULL, {.routine = M_HandleItemToggles}, KITEM_FLAMESHIELD, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Flame Shield", NULL, {.routine = M_HandleItemToggles}, KITEM_FLAMESHIELD, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Pogo Spring", NULL, {.routine = M_HandleItemToggles}, KITEM_POGOSPRING, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Pogo Spring", NULL, {.routine = M_HandleItemToggles}, KITEM_POGOSPRING, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Kitchen Sink", NULL, {.routine = M_HandleItemToggles}, KITEM_KITCHENSINK, 0}, // {IT_KEYHANDLER | IT_NOTHING, NULL, NULL, NULL, {.routine = M_HandleItemToggles}, 0, 0}, -- next time, gadget
{IT_KEYHANDLER | IT_NOTHING, NULL, NULL, NULL, {.routine = M_HandleItemToggles}, 255, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, NULL, NULL, {.routine = M_HandleItemToggles}, 255, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, NULL, NULL, {.routine = M_HandleItemToggles}, 255, 0},
}; };
static void init_routine(void) static void init_routine(void)
@ -74,7 +72,7 @@ menu_t OPTIONS_GameplayItemsDef = {
&OPTIONS_GameplayDef, &OPTIONS_GameplayDef,
0, 0,
OPTIONS_GameplayItems, OPTIONS_GameplayItems,
0, 40, 14, 32,
SKINCOLOR_SCARLET, 0, SKINCOLOR_SCARLET, 0,
MBF_DRAWBGWHILEPLAYING, MBF_DRAWBGWHILEPLAYING,
NULL, NULL,
@ -105,7 +103,7 @@ static void M_ToggleThunderdome(void)
void M_HandleItemToggles(INT32 choice) void M_HandleItemToggles(INT32 choice)
{ {
const INT32 width = 9, height = 4; const INT32 width = 8, height = 4;
INT32 column = itemOn/height, row = itemOn%height; INT32 column = itemOn/height, row = itemOn%height;
INT16 next; INT16 next;
UINT8 i; UINT8 i;
@ -114,7 +112,35 @@ void M_HandleItemToggles(INT32 choice)
(void) choice; (void) choice;
if (menucmd[pid].dpad_lr > 0) if (M_MenuExtraPressed(pid))
{
INT32 v = !M_AnyItemsEnabled();
for (i = 0; i < NUMKARTRESULTS-1; i++)
{
CV_SetValue(&cv_items[i], v);
}
M_ToggleThunderdome();
if (cv_thunderdome.value)
{
S_StartSoundAtVolume(NULL, sfx_slot02, 80);
}
else
{
S_StartSound(NULL, sfx_itrolf);
}
M_SetMenuDelay(pid);
}
else if (M_MenuButtonPressed(pid, MBT_R))
{
CV_AddValue(&cv_kartfrantic, 1);
S_StartSound(NULL, (cv_kartfrantic.value ? sfx_noooo2 : sfx_kc48));
M_SetMenuDelay(pid);
}
else if (menucmd[pid].dpad_lr > 0)
{ {
S_StartSound(NULL, sfx_s3k5b); S_StartSound(NULL, sfx_s3k5b);
column++; column++;
@ -173,7 +199,7 @@ void M_HandleItemToggles(INT32 choice)
else if (M_MenuConfirmPressed(pid)) else if (M_MenuConfirmPressed(pid))
{ {
M_SetMenuDelay(pid); M_SetMenuDelay(pid);
if (currentMenu->menuitems[itemOn].mvar1 == 255) if (currentMenu->menuitems[itemOn].mvar1 == 0)
{ {
//S_StartSound(NULL, sfx_s26d); //S_StartSound(NULL, sfx_s26d);
if (!shitsfree) if (!shitsfree)
@ -183,17 +209,6 @@ void M_HandleItemToggles(INT32 choice)
} }
} }
else else
if (currentMenu->menuitems[itemOn].mvar1 == 0)
{
INT32 v = !M_AnyItemsEnabled();
S_StartSound(NULL, sfx_s1b4);
for (i = 0; i < NUMKARTRESULTS-1; i++)
{
CV_SetValue(&cv_items[i], v);
}
M_ToggleThunderdome();
}
else
{ {
if (currentMenu->menuitems[itemOn].mvar2) if (currentMenu->menuitems[itemOn].mvar2)
{ {