MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / zEntPlayer_SNDPlayRandom

Function zEntPlayer_SNDPlayRandom

src/SB/Game/zEntPlayer.cpp:5816–5869  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5814}
5815
5816void zEntPlayer_SNDPlayRandom(_tagePlayerSnd player_snd_start, _tagePlayerSnd player_snd_end,
5817 float delay)
5818{
5819 if (globals.cmgr == NULL && !sPlayerIgnoreSound)
5820 {
5821 S32 diff = player_snd_end - player_snd_start + 1;
5822 S32 rand_array[32];
5823 for (S32 i = 0; i < diff; i++)
5824 {
5825 rand_array[i] = player_snd_start + i;
5826 }
5827
5828 for (S32 i = 0; i < diff; i++)
5829 {
5830 U32 j = rand() % diff;
5831 S32 swap = rand_array[i];
5832 rand_array[i] = rand_array[j];
5833 rand_array[j] = swap;
5834 }
5835
5836 S32 pick_sound = 0;
5837 for (S32 i = 0; i < diff; i++)
5838 {
5839 S32 possible = rand_array[i];
5840 if (sPlayerSnd[gCurrentPlayer][possible] &&
5841 possible != sPlayerSndRand[gCurrentPlayer][player_snd_start])
5842 {
5843 pick_sound = possible;
5844 break;
5845 }
5846 pick_sound = 0;
5847 }
5848
5849 if (pick_sound > 0)
5850 {
5851 sPlayerSndRand[gCurrentPlayer][player_snd_start] = pick_sound;
5852 U32 returned_snd_id =
5853 xSndPlay(sPlayerSnd[gCurrentPlayer][pick_sound], sPlayerSndFxVolume[pick_sound],
5854 0.0f, 0x80, 0, 0, SND_CAT_GAME, delay);
5855
5856 if (sPlayerRumbleTime[pick_sound] > 0.0f)
5857 {
5858 xPadAddRumble(globals.currentActivePad, sPlayerRumbleType[pick_sound],
5859 sPlayerRumbleTime[pick_sound], 1, 0);
5860 }
5861
5862 // This unrolling makes no sense
5863 for (S32 i = 0; i < (player_snd_end + 1) - player_snd_start; i++)
5864 {
5865 sPlayerSndID[gCurrentPlayer][player_snd_start + i] = returned_snd_id;
5866 }
5867 }
5868 }
5869}
5870
5871void zEntPlayer_SNDSetVol(_tagePlayerSnd player_snd, F32 new_vol)
5872{

Callers 2

zEntPlayer_DamageFunction · 0.70
play_soundFunction · 0.70

Calls 3

randFunction · 0.85
xPadAddRumbleFunction · 0.85
xSndPlayFunction · 0.50

Tested by

no test coverage detected