From f1255730485d42f1a5b62f3a26605c65faf22d8b Mon Sep 17 00:00:00 2001 From: toaster <rollerorbital@gmail.com> Date: Sun, 29 Jul 2018 18:35:56 +0100 Subject: [PATCH] Some minor things to help draw sonicitems to a close. * "kartvoices" cvar. Possible values "Never", "Tasteful" (default), and "Meme". * Added a way to move quickly through the credits, rather than skip them entirely (hold spacebar or down arrow). * Fix a few mistakes in M_ChangeCvar, some of which I introduced and some of which were weird in the first place. * Tweak the offset of the arrows that let you know you can modify a cvar by pressing left or right (some via a patch.kart change, but others via tweaking the drawing location). --- src/d_netcmd.c | 2 ++ src/d_netcmd.h | 1 + src/f_finale.c | 17 ++++++++++++----- src/k_kart.c | 23 ++++++++++++++++------- src/m_menu.c | 33 ++++++++++++++++++--------------- src/p_user.c | 11 +++++++---- 6 files changed, 56 insertions(+), 31 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 167457d15..f79547476 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -355,6 +355,8 @@ consvar_t cv_kartcomeback = {"kartcomeback", "On", CV_NETVAR|CV_CHEAT|CV_CALL|CV consvar_t cv_kartmirror = {"kartmirror", "Off", CV_NETVAR|CV_CHEAT|CV_CALL|CV_NOINIT, CV_OnOff, KartMirror_OnChange, 0, NULL, NULL, 0, 0, NULL}; static CV_PossibleValue_t kartspeedometer_cons_t[] = {{0, "Off"}, {1, "Kilometers"}, {2, "Miles"}, {3, "Fracunits"}, {0, NULL}}; consvar_t cv_kartspeedometer = {"kartdisplayspeed", "Off", CV_SAVE, kartspeedometer_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; // use tics in display +static CV_PossibleValue_t kartvoices_cons_t[] = {{0, "Never"}, {1, "Tasteful"}, {2, "Meme"}, {0, NULL}}; +consvar_t cv_kartvoices = {"kartvoices", "Tasteful", CV_SAVE, kartvoices_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; // this might be a debug or it might be an undocumented regular feature consvar_t cv_karteliminatelast = {"karteliminatelast", "Yes", CV_NETVAR|CV_CHEAT|CV_CALL, CV_OnOff, KartEliminateLast_OnChange, 0, NULL, NULL, 0, 0, NULL}; diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 009563afb..371df7201 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -126,6 +126,7 @@ extern consvar_t cv_kartfrantic; extern consvar_t cv_kartcomeback; extern consvar_t cv_kartmirror; extern consvar_t cv_kartspeedometer; +extern consvar_t cv_kartvoices; extern consvar_t cv_karteliminatelast; diff --git a/src/f_finale.c b/src/f_finale.c index e10ba1a6f..ab79fa782 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -625,7 +625,7 @@ void F_CreditDrawer(void) y += 12<<FRACBITS; break; } - if (FixedMul(y,vid.dupy) > vid.height) + if (((y>>FRACBITS) * vid.dupy) > vid.height) break; } @@ -686,13 +686,20 @@ boolean F_CreditResponder(event_t *event) break; } - /*if (!(timesBeaten) && !(netgame || multiplayer)) - return false;*/ - if (event->type != ev_keydown) return false; - if (key != KEY_ESCAPE && key != KEY_ENTER && key != KEY_SPACE && key != KEY_BACKSPACE) + if (key == KEY_DOWNARROW || key == KEY_SPACE) + { + if (!timetonext && !finalecount) + animtimer += 7; + return false; + } + + /*if (!(timesBeaten) && !(netgame || multiplayer)) + return false;*/ + + if (key != KEY_ESCAPE && key != KEY_ENTER && key != KEY_BACKSPACE) return false; if (keypressed) diff --git a/src/k_kart.c b/src/k_kart.c index 081a94921..dc1f52ed2 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -403,6 +403,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartcomeback); CV_RegisterVar(&cv_kartmirror); CV_RegisterVar(&cv_kartspeedometer); + CV_RegisterVar(&cv_kartvoices); CV_RegisterVar(&cv_karteliminatelast); CV_RegisterVar(&cv_votetime); @@ -1338,18 +1339,21 @@ static void K_RegularVoiceTimers(player_t *player) static void K_PlayTauntSound(mobj_t *source) { - if (source->player && source->player->kartstuff[k_tauntvoices]) // Prevents taunt sounds from playing every time the button is pressed - return; + sfxenum_t pick = P_RandomKey(4); // Gotta roll the RNG every time this is called for sync reasons + boolean tasteful = (!source->player || !source->player->kartstuff[k_tauntvoices]); + + if (cv_kartvoices.value && (tasteful || cv_kartvoices.value == 2)) + S_StartSound(source, sfx_taunt1+pick); - S_StartSound(source, sfx_taunt1+P_RandomKey(4)); + if (!tasteful) + return; K_TauntVoiceTimers(source->player); } static void K_PlayOvertakeSound(mobj_t *source) { - if (source->player && source->player->kartstuff[k_voices]) // Prevents taunt sounds from playing every time the button is pressed - return; + boolean tasteful = (!source->player || !source->player->kartstuff[k_voices]); if (!G_RaceGametype()) // Only in race return; @@ -1358,14 +1362,19 @@ static void K_PlayOvertakeSound(mobj_t *source) if (leveltime < starttime+(10*TICRATE)) return; - S_StartSound(source, sfx_slow); + if (cv_kartvoices.value && (tasteful || cv_kartvoices.value == 2)) + S_StartSound(source, sfx_slow); + + if (!tasteful) + return; K_RegularVoiceTimers(source->player); } static void K_PlayHitEmSound(mobj_t *source) { - S_StartSound(source, sfx_hitem); + if (cv_kartvoices.value) + S_StartSound(source, sfx_hitem); K_RegularVoiceTimers(source->player); } diff --git a/src/m_menu.c b/src/m_menu.c index 1ee24f476..ce4e74863 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -1337,9 +1337,10 @@ static menuitem_t OP_SoundOptionsMenu[] = {IT_STRING|IT_CVAR, NULL, "Reverse L/R Channels", &stereoreverse, 70}, {IT_STRING|IT_CVAR, NULL, "Surround Sound", &surround, 80}, - {IT_STRING|IT_CVAR, NULL, "Powerup Warning", &cv_kartinvinsfx, 100}, + {IT_STRING|IT_CVAR, NULL, "Character voices", &cv_kartvoices, 100}, + {IT_STRING|IT_CVAR, NULL, "Powerup Warning", &cv_kartinvinsfx, 110}, - {IT_KEYHANDLER|IT_STRING, NULL, "Sound Test", M_HandleSoundTest, 120}, + {IT_KEYHANDLER|IT_STRING, NULL, "Sound Test", M_HandleSoundTest, 130}, }; /*static menuitem_t OP_DataOptionsMenu[] = @@ -2203,29 +2204,30 @@ static void M_ChangeCvar(INT32 choice) if (cv == &cv_playercolor) { SINT8 skinno = R_SkinAvailable(cv_chooseskin.string); - if (skinno == -1) - return; - CV_SetValue(cv,skins[skinno].prefcolor); + if (skinno != -1) + CV_SetValue(cv,skins[skinno].prefcolor); + return; } - return; CV_Set(cv,cv->defaultvalue); return; } + choice = (choice<<1) - 1; + if (((currentMenu->menuitems[itemOn].status & IT_CVARTYPE) == IT_CV_SLIDER) ||((currentMenu->menuitems[itemOn].status & IT_CVARTYPE) == IT_CV_INVISSLIDER) ||((currentMenu->menuitems[itemOn].status & IT_CVARTYPE) == IT_CV_NOMOD)) { - CV_SetValue(cv,cv->value+(choice*2-1)); + CV_SetValue(cv,cv->value+choice); } else if (cv->flags & CV_FLOAT) { char s[20]; - sprintf(s,"%f",FIXED_TO_FLOAT(cv->value)+(choice*2-1)*(1.0f/16.0f)); + sprintf(s,"%f",FIXED_TO_FLOAT(cv->value)+(choice)*(1.0f/16.0f)); CV_Set(cv,s); } else - CV_AddValue(cv,choice*2-1); + CV_AddValue(cv,choice); } static boolean M_ChangeStringCvar(INT32 choice) @@ -2583,7 +2585,7 @@ boolean M_Responder(event_t *ev) if (routine && ((currentMenu->menuitems[itemOn].status & IT_TYPE) == IT_ARROWS || (currentMenu->menuitems[itemOn].status & IT_TYPE) == IT_CVAR)) { - if (currentMenu != &OP_SoundOptionsDef) + if (currentMenu != &OP_SoundOptionsDef || itemOn > 3) S_StartSound(NULL, sfx_menu1); routine(0); } @@ -2593,7 +2595,7 @@ boolean M_Responder(event_t *ev) if (routine && ((currentMenu->menuitems[itemOn].status & IT_TYPE) == IT_ARROWS || (currentMenu->menuitems[itemOn].status & IT_TYPE) == IT_CVAR)) { - if (currentMenu != &OP_SoundOptionsDef) + if (currentMenu != &OP_SoundOptionsDef || itemOn > 3) S_StartSound(NULL, sfx_menu1); routine(1); } @@ -2680,7 +2682,7 @@ boolean M_Responder(event_t *ev) || cv == &cv_newgametype) return true; - if (currentMenu != &OP_SoundOptionsDef) + if (currentMenu != &OP_SoundOptionsDef || itemOn > 3) S_StartSound(NULL, sfx_menu1); routine(-1); return true; @@ -3127,7 +3129,7 @@ static void M_DrawSlider(INT32 x, INT32 y, const consvar_t *cv, boolean ontop) if (ontop) { - V_DrawCharacter(x - 15 - (skullAnimCounter/5), y, + V_DrawCharacter(x - 16 - (skullAnimCounter/5), y, '\x1C' | highlightflags, false); // left arrow V_DrawCharacter(x+(SLIDER_RANGE*8) + 8 + (skullAnimCounter/5), y, '\x1D' | highlightflags, false); // right arrow @@ -4566,6 +4568,7 @@ static void M_DrawSkyRoom(void) break; } } + if (y) { y += currentMenu->y; @@ -4581,9 +4584,9 @@ static void M_DrawSkyRoom(void) if (lengthstring) { V_DrawCharacter(BASEVIDWIDTH - currentMenu->x - 10 - lengthstring - (skullAnimCounter/5), currentMenu->y+currentMenu->menuitems[itemOn].alphaKey, - '\x1C' | highlightflags, false); + '\x1C' | highlightflags, false); // left arrow V_DrawCharacter(BASEVIDWIDTH - currentMenu->x + 2 + (skullAnimCounter/5), currentMenu->y+currentMenu->menuitems[itemOn].alphaKey, - '\x1D' | highlightflags, false); + '\x1D' | highlightflags, false); // right arrow } } diff --git a/src/p_user.c b/src/p_user.c index 9d196268d..f33aeffd7 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1708,10 +1708,13 @@ void P_DoPlayerExit(player_t *player) else if (!countdown) countdown = cv_countdowntime.value*TICRATE + 1; // Use cv_countdowntime - if (K_IsPlayerLosing(player)) - S_StartSound(player->mo, sfx_klose); - else - S_StartSound(player->mo, sfx_kwin); + if (cv_kartvoices.value) + { + if (K_IsPlayerLosing(player)) + S_StartSound(player->mo, sfx_klose); + else + S_StartSound(player->mo, sfx_kwin); + } player->exiting = 3*TICRATE; -- GitLab