Merge branch 'bot-muffler' into 'master'

Don't force player sounds to full volume when exiting

See merge request KartKrew/Kart!1615
This commit is contained in:
Oni 2023-11-13 13:30:51 +00:00
commit 9134e6a4e7
4 changed files with 18 additions and 4 deletions

View file

@ -12630,4 +12630,10 @@ void K_SetTireGrease(player_t *player, tic_t tics)
player->tiregrease = tics; player->tiregrease = tics;
} }
// somewhat sensible check for HUD sounds in a post-bot-takeover world
boolean K_IsPlayingDisplayPlayer(player_t *player)
{
return P_IsDisplayPlayer(player) && (!player->exiting);
}
//} //}

View file

@ -243,6 +243,8 @@ boolean K_isPlayerInSpecialState(player_t *p);
void K_SetTireGrease(player_t *player, tic_t tics); void K_SetTireGrease(player_t *player, tic_t tics);
boolean K_IsPlayingDisplayPlayer(player_t *player);
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
#endif #endif

View file

@ -1633,7 +1633,7 @@ void K_KartItemRoulette(player_t *const player, ticcmd_t *const cmd)
//player->karthud[khud_itemblinkmode] = 1; //player->karthud[khud_itemblinkmode] = 1;
//player->karthud[khud_rouletteoffset] = K_GetRouletteOffset(roulette, FRACUNIT); //player->karthud[khud_rouletteoffset] = K_GetRouletteOffset(roulette, FRACUNIT);
if (P_IsDisplayPlayer(player)) if (K_IsPlayingDisplayPlayer(player))
{ {
S_StartSound(NULL, sfx_itrole); S_StartSound(NULL, sfx_itrole);
} }
@ -1680,7 +1680,7 @@ void K_KartItemRoulette(player_t *const player, ticcmd_t *const cmd)
player->karthud[khud_itemblinkmode] = 0; player->karthud[khud_itemblinkmode] = 0;
player->karthud[khud_rouletteoffset] = K_GetRouletteOffset(roulette, FRACUNIT); player->karthud[khud_rouletteoffset] = K_GetRouletteOffset(roulette, FRACUNIT);
if (P_IsDisplayPlayer(player)) if (K_IsPlayingDisplayPlayer(player))
{ {
if (roulette->ringbox) if (roulette->ringbox)
{ {
@ -1714,7 +1714,7 @@ void K_KartItemRoulette(player_t *const player, ticcmd_t *const cmd)
// This makes the roulette produce the random noises. // This makes the roulette produce the random noises.
roulette->sound = (roulette->sound + 1) % 8; roulette->sound = (roulette->sound + 1) % 8;
if (P_IsDisplayPlayer(player)) if (K_IsPlayingDisplayPlayer(player))
{ {
if (roulette->ringbox) if (roulette->ringbox)
S_StartSound(NULL, sfx_s240); S_StartSound(NULL, sfx_s240);

View file

@ -426,6 +426,7 @@ void S_StartSoundAtVolume(const void *origin_p, sfxenum_t sfx_id, INT32 volume)
for (i = 0; i <= r_splitscreen; i++) for (i = 0; i <= r_splitscreen; i++)
{ {
player_t *player = &players[displayplayers[i]]; player_t *player = &players[displayplayers[i]];
boolean camaway = false;
memset(&listener[i], 0, sizeof (listener[i])); memset(&listener[i], 0, sizeof (listener[i]));
listenmobj[i] = NULL; listenmobj[i] = NULL;
@ -442,9 +443,11 @@ void S_StartSoundAtVolume(const void *origin_p, sfxenum_t sfx_id, INT32 volume)
else else
{ {
listenmobj[i] = player->mo; listenmobj[i] = player->mo;
if (player->exiting)
camaway = true;
} }
if (origin && origin == listenmobj[i] && !camera[i].freecam) if (origin && origin == listenmobj[i] && !camera[i].freecam && !camaway)
{ {
itsUs = true; itsUs = true;
} }
@ -763,6 +766,9 @@ void S_UpdateSounds(void)
if (c->origin != listenmobj[i]) if (c->origin != listenmobj[i])
continue; continue;
if (listenmobj[i]->player && listenmobj[i]->player->exiting)
continue;
itsUs = true; itsUs = true;
} }