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
This commit is contained in:
toaster 2025-08-14 22:26:49 +01:00
parent d98b88a61f
commit a7f119328e
2 changed files with 21 additions and 7 deletions

View file

@ -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)
? "<l_pressed> <gray>E Stop"
: "<l> <magenta>E Side",
? "<l_animated> <magenta>E Stop"
: "<l_animated> <magenta>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)
? "<a_pressed> <gray>Stop CD"
: "<a> <sky>Play CD",
? "<a_animated> <sky>Stop CD"
: "<a_animated> <sky>Play CD",
0, TINY_FONT, 0
);
}

View file

@ -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))
{