From a7f119328e3c0c2bee1ecebb20c01e6cc44051a8 Mon Sep 17 00:00:00 2001 From: toaster Date: Thu, 14 Aug 2025 22:26:49 +0100 Subject: [PATCH] Challenge Preview for SECRET_ALTMUSIC: Consistency - Since we're only using 50% of rollangle steps at 35fps, we can smooth it out under interp conditions like the flipping tile - Don't grey out the text/stop the button animation for the input prompt, since pressing it again will stop the music, whereas grey text on Drivers/Followers/Colors means no function - Keep the tile flipping even when not hovered over --- src/k_menudraw.c | 15 +++++++++++---- src/menus/extras-challenges.c | 13 ++++++++++--- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/k_menudraw.c b/src/k_menudraw.c index 358c26210..9781b07b1 100644 --- a/src/k_menudraw.c +++ b/src/k_menudraw.c @@ -7698,8 +7698,15 @@ static void M_DrawChallengePreview(INT32 x, INT32 y) if (pushed != 0) { rollangle = (Music_Elapsed(tune) % (ROTANGLES/2))*2; + if (rendertimefrac >= FRACUNIT/2) + { + // A fun interp ability: inbetweens + rollangle++; + } if (pushed > 0) + { rollangle = ((ROTANGLES-1) - rollangle); + } } #endif @@ -7732,8 +7739,8 @@ static void M_DrawChallengePreview(INT32 x, INT32 y) K_DrawGameControl( x, y, 0, (pushed < 0) - ? " E Stop" - : " E Side", + ? " E Stop" + : " E Side", 0, TINY_FONT, 0 ); @@ -7745,8 +7752,8 @@ static void M_DrawChallengePreview(INT32 x, INT32 y) K_DrawGameControl( x, y, 0, (pushed > 0) - ? " Stop CD" - : " Play CD", + ? " Stop CD" + : " Play CD", 0, TINY_FONT, 0 ); } diff --git a/src/menus/extras-challenges.c b/src/menus/extras-challenges.c index bd8bdad4b..733f44383 100644 --- a/src/menus/extras-challenges.c +++ b/src/menus/extras-challenges.c @@ -596,12 +596,19 @@ void M_ChallengesTick(void) { UINT16 id = (challengesmenu.hilix * CHALLENGEGRIDHEIGHT) + challengesmenu.hiliy; boolean seeeveryone = challengesmenu.requestflip; - boolean allthewaythrough; + boolean allthewaythrough = allthewaythrough = (!seeeveryone && !challengesmenu.pending); + UINT8 maxflip; + + if (id == challengesmenu.nowplayingtile) + { + // Don't permit the active song to stop spinning + id = UINT16_MAX; + } + for (i = 0; i < (CHALLENGEGRIDHEIGHT * gamedata->challengegridwidth); i++) { - allthewaythrough = (!seeeveryone && !challengesmenu.pending && i != id); - maxflip = (allthewaythrough ? TILEFLIP_MAX : (TILEFLIP_MAX/2)); + maxflip = ((allthewaythrough && i != id) ? TILEFLIP_MAX : (TILEFLIP_MAX/2)); if ((seeeveryone || (i == id) || (i == challengesmenu.nowplayingtile) || (challengesmenu.extradata[i].flip > 0)) && (challengesmenu.extradata[i].flip != maxflip)) {