From c5bb660372d5253c891d9f6c57eec8cbf12dd7a8 Mon Sep 17 00:00:00 2001 From: toaster Date: Mon, 3 Apr 2023 19:54:20 +0100 Subject: [PATCH] M_DrawSoundTest: Animated volume knob - Animates every 2 tics when up/down is held. - One frame when pressing confirm. --- src/k_menudraw.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/k_menudraw.c b/src/k_menudraw.c index fd900cffd..012613e51 100644 --- a/src/k_menudraw.c +++ b/src/k_menudraw.c @@ -6141,12 +6141,31 @@ void M_DrawSoundTest(void) else if (currentMenu->menuitems[i].mvar2 == stereospecial_vol) // Vol { consvar_t *voltoadjust = M_GetSoundTestVolumeCvar(); - INT32 j, vol = 0; + INT32 j = 0, vol = 0; const INT32 barheight = 22; + patch_t *knob = NULL; + INT32 knobflags = 0; - V_DrawFixedPatch((x+1) << FRACBITS, y << FRACBITS, - FRACUNIT, 0, - W_CachePatchName("STER_KNB", PU_CACHE), + if (i == itemOn) + { + if ((menucmd[pid].dpad_ud < 0 && (soundtest.menutick & 2)) || M_MenuConfirmPressed(pid)) + { + knob = W_CachePatchName("STER_KNT", PU_CACHE); + knobflags = V_FLIP; + j = 24; + } + else if (menucmd[pid].dpad_ud > 0 && (soundtest.menutick & 2)) + { + knob = W_CachePatchName("STER_KNT", PU_CACHE); + } + } + + if (knob == NULL) + knob = W_CachePatchName("STER_KNB", PU_CACHE); + + V_DrawFixedPatch((x+1+j) << FRACBITS, y << FRACBITS, + FRACUNIT, knobflags, + knob, NULL );