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) if (pushed != 0)
{ {
rollangle = (Music_Elapsed(tune) % (ROTANGLES/2))*2; rollangle = (Music_Elapsed(tune) % (ROTANGLES/2))*2;
if (rendertimefrac >= FRACUNIT/2)
{
// A fun interp ability: inbetweens
rollangle++;
}
if (pushed > 0) if (pushed > 0)
{
rollangle = ((ROTANGLES-1) - rollangle); rollangle = ((ROTANGLES-1) - rollangle);
}
} }
#endif #endif
@ -7732,8 +7739,8 @@ static void M_DrawChallengePreview(INT32 x, INT32 y)
K_DrawGameControl( K_DrawGameControl(
x, y, 0, x, y, 0,
(pushed < 0) (pushed < 0)
? "<l_pressed> <gray>E Stop" ? "<l_animated> <magenta>E Stop"
: "<l> <magenta>E Side", : "<l_animated> <magenta>E Side",
0, TINY_FONT, 0 0, TINY_FONT, 0
); );
@ -7745,8 +7752,8 @@ static void M_DrawChallengePreview(INT32 x, INT32 y)
K_DrawGameControl( K_DrawGameControl(
x, y, 0, x, y, 0,
(pushed > 0) (pushed > 0)
? "<a_pressed> <gray>Stop CD" ? "<a_animated> <sky>Stop CD"
: "<a> <sky>Play CD", : "<a_animated> <sky>Play CD",
0, TINY_FONT, 0 0, TINY_FONT, 0
); );
} }

View file

@ -596,12 +596,19 @@ void M_ChallengesTick(void)
{ {
UINT16 id = (challengesmenu.hilix * CHALLENGEGRIDHEIGHT) + challengesmenu.hiliy; UINT16 id = (challengesmenu.hilix * CHALLENGEGRIDHEIGHT) + challengesmenu.hiliy;
boolean seeeveryone = challengesmenu.requestflip; boolean seeeveryone = challengesmenu.requestflip;
boolean allthewaythrough; boolean allthewaythrough = allthewaythrough = (!seeeveryone && !challengesmenu.pending);
UINT8 maxflip; 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++) for (i = 0; i < (CHALLENGEGRIDHEIGHT * gamedata->challengegridwidth); i++)
{ {
allthewaythrough = (!seeeveryone && !challengesmenu.pending && i != id); maxflip = ((allthewaythrough && i != id) ? TILEFLIP_MAX : (TILEFLIP_MAX/2));
maxflip = (allthewaythrough ? TILEFLIP_MAX : (TILEFLIP_MAX/2));
if ((seeeveryone || (i == id) || (i == challengesmenu.nowplayingtile) || (challengesmenu.extradata[i].flip > 0)) if ((seeeveryone || (i == id) || (i == challengesmenu.nowplayingtile) || (challengesmenu.extradata[i].flip > 0))
&& (challengesmenu.extradata[i].flip != maxflip)) && (challengesmenu.extradata[i].flip != maxflip))
{ {