From 66b7bf649a6e7cdb6bae6feaae18ce53cdeddded Mon Sep 17 00:00:00 2001 From: toaster Date: Tue, 19 Aug 2025 15:19:39 +0100 Subject: [PATCH] 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 `` instead of an Item slot - Put `Frantic Mode` on `` since it's in the changelog but not surfaced in any menus right now - No gaps (RIP free real estate) --- src/k_menudraw.c | 35 +++++++------- src/menus/options-gameplay-item-toggles.c | 59 ++++++++++++++--------- 2 files changed, 55 insertions(+), 39 deletions(-) diff --git a/src/k_menudraw.c b/src/k_menudraw.c index 9afb9c3c3..538b637c9 100644 --- a/src/k_menudraw.c +++ b/src/k_menudraw.c @@ -376,7 +376,7 @@ static void M_DrawMenuParty(void) UINT16 color; 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; } @@ -5714,11 +5714,11 @@ void M_DrawItemToggles(void) static UINT8 black[256]; memset(black, 16, 256); - const INT32 edges = 9; + const INT32 edges = 8; const INT32 height = 4; - const INT32 spacing = 34; + const INT32 spacing = 35; const INT32 column = itemOn/height; - //const INT32 row = itemOn%height; + const INT32 row = itemOn%height; INT32 leftdraw, rightdraw, totaldraw; INT32 x, y = currentMenu->y; INT32 onx = 0, ony = 0; @@ -5774,14 +5774,6 @@ void M_DrawItemToggles(void) } 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); y += spacing; @@ -5822,13 +5814,10 @@ void M_DrawItemToggles(void) y = currentMenu->y; } + drawnum = 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)); if (shitsfree) @@ -5880,6 +5869,18 @@ void M_DrawItemToggles(void) } } } + + // Button prompts + K_DrawGameControl( + (BASEVIDWIDTH/2) - cv_kartfrantic.value, BASEVIDHEIGHT-20, 0, + va( + " Toggle All %s Frantic Mode: %s", + cv_thunderdome.value ? "(Ring Box Mode) " : "(Item Box Mode)", + cv_kartfrantic.value ? " On" : "Off" + ), + 1, TINY_FONT, + (((row == height-1) && (drawnum > 1)) ? V_TRANSLUCENT : 0) + ); } diff --git a/src/menus/options-gameplay-item-toggles.c b/src/menus/options-gameplay-item-toggles.c index d582300f0..0ef0272c9 100644 --- a/src/menus/options-gameplay-item-toggles.c +++ b/src/menus/options-gameplay-item-toggles.c @@ -18,8 +18,8 @@ menuitem_t OPTIONS_GameplayItems[] = // 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, "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, "Toggle All / Ring Box Only", NULL, {.routine = M_HandleItemToggles}, 0, 0}, + {IT_KEYHANDLER | IT_NOTHING, NULL, "Hyudoro", NULL, {.routine = M_HandleItemToggles}, KITEM_HYUDORO, 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 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, "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, "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, "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, "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}, 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}, +// {IT_KEYHANDLER | IT_NOTHING, NULL, NULL, NULL, {.routine = M_HandleItemToggles}, 0, 0}, -- next time, gadget + }; static void init_routine(void) @@ -74,7 +72,7 @@ menu_t OPTIONS_GameplayItemsDef = { &OPTIONS_GameplayDef, 0, OPTIONS_GameplayItems, - 0, 40, + 14, 32, SKINCOLOR_SCARLET, 0, MBF_DRAWBGWHILEPLAYING, NULL, @@ -105,7 +103,7 @@ static void M_ToggleThunderdome(void) void M_HandleItemToggles(INT32 choice) { - const INT32 width = 9, height = 4; + const INT32 width = 8, height = 4; INT32 column = itemOn/height, row = itemOn%height; INT16 next; UINT8 i; @@ -114,7 +112,35 @@ void M_HandleItemToggles(INT32 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); column++; @@ -173,7 +199,7 @@ void M_HandleItemToggles(INT32 choice) else if (M_MenuConfirmPressed(pid)) { M_SetMenuDelay(pid); - if (currentMenu->menuitems[itemOn].mvar1 == 255) + if (currentMenu->menuitems[itemOn].mvar1 == 0) { //S_StartSound(NULL, sfx_s26d); if (!shitsfree) @@ -183,17 +209,6 @@ void M_HandleItemToggles(INT32 choice) } } 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) {