summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/audio/AudioManager.cpp201
-rw-r--r--src/audio/AudioManager.h3
-rw-r--r--src/audio/soundlist.h2
3 files changed, 88 insertions, 118 deletions
diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp
index 7e177226..e3cfdc8e 100644
--- a/src/audio/AudioManager.cpp
+++ b/src/audio/AudioManager.cpp
@@ -305,9 +305,9 @@ cAudioManager::cAudioManager()
m_fSpeedOfSound = 6.86f;
m_nTimeSpent = 50;
m_nActiveSamples = NUM_SOUNDS_SAMPLES_SLOTS;
- m_bActiveSampleQueue = 1;
+ m_nActiveSampleQueue = 1;
ClearRequestedQueue();
- m_bActiveSampleQueue = 0;
+ m_nActiveSampleQueue = 0;
ClearRequestedQueue();
ClearActiveSamples();
GenerateIntegerRandomNumberTable();
@@ -337,15 +337,15 @@ cAudioManager::AddDetailsToRequestedOrderList(uint8 sample)
uint32 i = 0;
if (sample != 0) {
for (; i < sample; i++) {
- if (m_asSamples[m_bActiveSampleQueue][m_abSampleQueueIndexTable[m_bActiveSampleQueue][i]].m_nCalculatedVolume >
- m_asSamples[m_bActiveSampleQueue][sample].m_nCalculatedVolume)
+ if (m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i]].m_nCalculatedVolume >
+ m_asSamples[m_nActiveSampleQueue][sample].m_nCalculatedVolume)
break;
}
if (i < sample) {
- memmove(&m_abSampleQueueIndexTable[m_bActiveSampleQueue][i + 1], &m_abSampleQueueIndexTable[m_bActiveSampleQueue][i], m_nActiveSamples - i - 1);
+ memmove(&m_abSampleQueueIndexTable[m_nActiveSampleQueue][i + 1], &m_abSampleQueueIndexTable[m_nActiveSampleQueue][i], m_nActiveSamples - i - 1);
}
}
- m_abSampleQueueIndexTable[m_bActiveSampleQueue][i] = sample;
+ m_abSampleQueueIndexTable[m_nActiveSampleQueue][i] = sample;
}
void
@@ -415,7 +415,7 @@ cAudioManager::AddReleasingSounds()
{
bool toProcess[44]; // why not 27?
- int8 queue = m_bActiveSampleQueue == 0;
+ int8 queue = m_nActiveSampleQueue == 0;
for (int32 i = 0; i < m_SampleRequestQueuesStatus[queue]; i++) {
tSound &sample = m_asSamples[queue][m_abSampleQueueIndexTable[queue][i]];
@@ -423,9 +423,9 @@ cAudioManager::AddReleasingSounds()
continue;
toProcess[i] = false;
- for (int32 j = 0; j < m_SampleRequestQueuesStatus[m_bActiveSampleQueue]; j++) {
- if (sample.m_nEntityIndex == m_asSamples[m_bActiveSampleQueue][m_abSampleQueueIndexTable[m_bActiveSampleQueue][j]].m_nEntityIndex &&
- sample.m_nCounter == m_asSamples[m_bActiveSampleQueue][m_abSampleQueueIndexTable[m_bActiveSampleQueue][j]].m_nCounter) {
+ for (int32 j = 0; j < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; j++) {
+ if (sample.m_nEntityIndex == m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][j]].m_nEntityIndex &&
+ sample.m_nCounter == m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][j]].m_nCounter) {
toProcess[i] = true;
break;
}
@@ -468,13 +468,13 @@ cAudioManager::AddSampleToRequestedQueue()
if (m_sQueueSample.m_nSampleIndex < TOTAL_AUDIO_SAMPLES) {
calculatedVolume = m_sQueueSample.m_nReleasingVolumeModificator * (maxVolume - m_sQueueSample.m_nVolume);
- sampleIndex = m_SampleRequestQueuesStatus[m_bActiveSampleQueue];
+ sampleIndex = m_SampleRequestQueuesStatus[m_nActiveSampleQueue];
if (sampleIndex >= m_nActiveSamples) {
- sampleIndex = m_abSampleQueueIndexTable[m_bActiveSampleQueue][m_nActiveSamples - 1];
- if (m_asSamples[m_bActiveSampleQueue][sampleIndex].m_nCalculatedVolume <= calculatedVolume)
+ sampleIndex = m_abSampleQueueIndexTable[m_nActiveSampleQueue][m_nActiveSamples - 1];
+ if (m_asSamples[m_nActiveSampleQueue][sampleIndex].m_nCalculatedVolume <= calculatedVolume)
return;
} else {
- ++m_SampleRequestQueuesStatus[m_bActiveSampleQueue];
+ ++m_SampleRequestQueuesStatus[m_nActiveSampleQueue];
}
m_sQueueSample.m_nCalculatedVolume = calculatedVolume;
m_sQueueSample.m_bLoopEnded = false;
@@ -493,7 +493,7 @@ cAudioManager::AddSampleToRequestedQueue()
if (!m_bDynamicAcousticModelingStatus)
m_sQueueSample.m_bReverbFlag = false;
- m_asSamples[m_bActiveSampleQueue][sampleIndex] = m_sQueueSample;
+ m_asSamples[m_nActiveSampleQueue][sampleIndex] = m_sQueueSample;
AddDetailsToRequestedOrderList(sampleIndex);
if (bReflections)
@@ -567,9 +567,9 @@ void
cAudioManager::ClearRequestedQueue()
{
for (int32 i = 0; i < m_nActiveSamples; i++) {
- m_abSampleQueueIndexTable[m_bActiveSampleQueue][i] = m_nActiveSamples;
+ m_abSampleQueueIndexTable[m_nActiveSampleQueue][i] = m_nActiveSamples;
}
- m_SampleRequestQueuesStatus[m_bActiveSampleQueue] = 0;
+ m_SampleRequestQueuesStatus[m_nActiveSampleQueue] = 0;
}
int32
@@ -3538,12 +3538,12 @@ cAudioManager::ProcessActiveQueues()
CVector position;
for (int32 i = 0; i < m_nActiveSamples; i++) {
- m_asSamples[m_bActiveSampleQueue][i].m_bIsProcessed = false;
+ m_asSamples[m_nActiveSampleQueue][i].m_bIsProcessed = false;
m_asActiveSamples[i].m_bIsProcessed = false;
}
- for (int32 i = 0; i < m_SampleRequestQueuesStatus[m_bActiveSampleQueue]; ++i) {
- tSound &sample = m_asSamples[m_bActiveSampleQueue][m_abSampleQueueIndexTable[m_bActiveSampleQueue][i]];
+ for (int32 i = 0; i < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; ++i) {
+ tSound &sample = m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i]];
if (sample.m_nSampleIndex != NO_SAMPLE) {
for (int32 j = 0; j < m_nActiveSamples; ++j) {
if (sample.m_nEntityIndex == m_asActiveSamples[j].m_nEntityIndex && sample.m_nCounter == m_asActiveSamples[j].m_nCounter &&
@@ -3627,8 +3627,8 @@ cAudioManager::ProcessActiveQueues()
m_asActiveSamples[i].m_nEntityIndex = AEHANDLE_NONE;
}
}
- for (int32 i = 0; i < m_SampleRequestQueuesStatus[m_bActiveSampleQueue]; ++i) {
- tSound &sample = m_asSamples[m_bActiveSampleQueue][m_abSampleQueueIndexTable[m_bActiveSampleQueue][i]];
+ for (int32 i = 0; i < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; ++i) {
+ tSound &sample = m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i]];
if (!sample.m_bIsProcessed && !sample.m_bLoopEnded && m_asAudioEntities[sample.m_nEntityIndex].m_bIsUsed && sample.m_nSampleIndex < NO_SAMPLE) {
if (sample.m_nCounter > 255 && sample.m_nLoopCount && sample.m_nLoopsRemaining) {
--sample.m_nLoopsRemaining;
@@ -7489,7 +7489,7 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound)
params.m_bDistanceCalculated = true;
params.m_fDistance = distSquared;
params.m_pPed = nil;
- SetupPedComments(&params, SOUND_8A);
+ SetupPedComments(&params, SOUND_INJURED_PED_MALE_PRISON);
}
gCellNextTime = time + 500 + m_anRandomTable[3] % 1500;
}
@@ -9197,17 +9197,17 @@ void
cAudioManager::ResetTimers(uint32 time)
{
if (m_bIsInitialised) {
- m_bTimerJustReset = 1;
+ m_bTimerJustReset = true;
m_nTimer = time;
ClearRequestedQueue();
- if (m_bActiveSampleQueue) {
- m_bActiveSampleQueue = 0;
+ if (m_nActiveSampleQueue) {
+ m_nActiveSampleQueue = 0;
ClearRequestedQueue();
- m_bActiveSampleQueue = 1;
+ m_nActiveSampleQueue = 1;
} else {
- m_bActiveSampleQueue = 1;
+ m_nActiveSampleQueue = 1;
ClearRequestedQueue();
- m_bActiveSampleQueue = 0;
+ m_nActiveSampleQueue = 0;
}
ClearActiveSamples();
ClearMissionAudio();
@@ -9228,7 +9228,7 @@ cAudioManager::Service()
if (m_bTimerJustReset) {
ResetAudioLogicTimers(m_nTimer);
MusicManager.ResetTimers(m_nTimer);
- m_bTimerJustReset = 0;
+ m_bTimerJustReset = false;
}
if (m_bIsInitialised) {
m_nPreviousUserPause = m_nUserPause;
@@ -9251,18 +9251,18 @@ cAudioManager::ServiceSoundEffects()
SampleManager.StopChannel(i);
ClearRequestedQueue();
- if (m_bActiveSampleQueue) {
- m_bActiveSampleQueue = 0;
+ if (m_nActiveSampleQueue) {
+ m_nActiveSampleQueue = 0;
ClearRequestedQueue();
- m_bActiveSampleQueue = 1;
+ m_nActiveSampleQueue = 1;
} else {
- m_bActiveSampleQueue = 1;
+ m_nActiveSampleQueue = 1;
ClearRequestedQueue();
- m_bActiveSampleQueue = 0;
+ m_nActiveSampleQueue = 0;
}
ClearActiveSamples();
}
- m_bActiveSampleQueue = m_bActiveSampleQueue != 1;
+ m_nActiveSampleQueue = m_nActiveSampleQueue != 1;
ProcessReverb();
ProcessSpecial();
ClearRequestedQueue();
@@ -9294,10 +9294,10 @@ cAudioManager::SetCurrent3DProvider(uint8 which)
for (uint8 i = 0; i < m_nActiveSamples + 1; ++i)
SampleManager.StopChannel(i);
ClearRequestedQueue();
- if (m_bActiveSampleQueue)
- m_bActiveSampleQueue = 0;
+ if (m_nActiveSampleQueue == 0)
+ m_nActiveSampleQueue = 1;
else
- m_bActiveSampleQueue = 1;
+ m_nActiveSampleQueue = 0;
ClearRequestedQueue();
ClearActiveSamples();
int8 current = SampleManager.SetCurrent3DProvider(which);
@@ -9330,17 +9330,16 @@ cAudioManager::SetEffectsMasterVolume(uint8 volume) const
void
cAudioManager::SetEntityStatus(int32 id, uint8 status)
{
- if (m_bIsInitialised && id >= 0 && id < totalAudioEntitiesSlots && m_asAudioEntities[id].m_bIsUsed) {
+ if (m_bIsInitialised && id >= 0 && id < totalAudioEntitiesSlots && m_asAudioEntities[id].m_bIsUsed)
m_asAudioEntities[id].m_nStatus = status;
- }
}
void
cAudioManager::SetMissionAudioLocation(float x, float y, float z)
{
if (m_bIsInitialised) {
- m_sMissionAudio.m_bPredefinedProperties = 0;
- m_sMissionAudio.m_vecPos = {x, y, z};
+ m_sMissionAudio.m_bPredefinedProperties = false;
+ m_sMissionAudio.m_vecPos = CVector(x, y, z);
}
}
@@ -9370,7 +9369,7 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, int32 freq)
uint8 emittingVol = vol - gJumboVolOffsetPercentage / 100;
m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, 180.f, m_sQueueSample.m_fDistance);
- if (m_sQueueSample.m_nVolume) {
+ if (m_sQueueSample.m_nVolume != 0) {
m_sQueueSample.m_nCounter = 3;
m_sQueueSample.m_nSampleIndex = SFX_JUMBO_ENGINE;
m_sQueueSample.m_nBankIndex = SAMPLEBANK_MAIN;
@@ -9400,7 +9399,7 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol)
int32 vol = ComputeVolume(emittingVol, 440.0f, m_sQueueSample.m_fDistance);
m_sQueueSample.m_nVolume = vol;
- if (m_sQueueSample.m_nVolume) {
+ if (m_sQueueSample.m_nVolume != 0) {
m_sQueueSample.m_nSampleIndex = SFX_JUMBO_DIST_FLY;
m_sQueueSample.m_nCounter = 0;
m_sQueueSample.m_nBankIndex = SAMPLEBANK_MAIN;
@@ -9427,9 +9426,9 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol)
if (m_sQueueSample.m_fDistance >= 240.f)
return false;
- m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, 240.f, m_sQueueSample.m_fDistance);
+ m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, 240.0f, m_sQueueSample.m_fDistance);
- if (m_sQueueSample.m_nVolume) {
+ if (m_sQueueSample.m_nVolume != 0) {
m_sQueueSample.m_nCounter = 5;
m_sQueueSample.m_nSampleIndex = SFX_JUMBO_RUMBLE;
m_sQueueSample.m_nBankIndex = SAMPLEBANK_MAIN;
@@ -9469,7 +9468,7 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol)
emittingVol -= emittingVol * gJumboVolOffsetPercentage / 100;
m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, 180.f, m_sQueueSample.m_fDistance);
- if (m_sQueueSample.m_nVolume) {
+ if (m_sQueueSample.m_nVolume != 0) {
m_sQueueSample.m_nCounter = 1;
m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI;
m_sQueueSample.m_nBankIndex = SAMPLEBANK_MAIN;
@@ -9499,7 +9498,7 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, int32 freq)
m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, 170.f, m_sQueueSample.m_fDistance);
- if (m_sQueueSample.m_nVolume) {
+ if (m_sQueueSample.m_nVolume != 0) {
m_sQueueSample.m_nCounter = 2;
m_sQueueSample.m_nSampleIndex = SFX_JUMBO_WHINE;
m_sQueueSample.m_nBankIndex = SAMPLEBANK_MAIN;
@@ -9529,7 +9528,7 @@ cAudioManager::SetupPedComments(cPedParams *params, uint32 sound)
float soundIntensity;
tPedComment pedComment;
- if (ped) {
+ if (ped != nil) {
switch (sound) {
case SOUND_AMMUNATION_WELCOME_1:
pedComment.m_nSampleIndex = SFX_AMMU_D;
@@ -9547,88 +9546,58 @@ cAudioManager::SetupPedComments(cPedParams *params, uint32 sound)
break;
}
- soundIntensity = 50.f;
-
- if (params->m_fDistance < SQR(soundIntensity)) {
- CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance);
- if (sound != SOUND_PAGER) {
- switch (sound) {
- case SOUND_AMMUNATION_WELCOME_1:
- case SOUND_AMMUNATION_WELCOME_2:
- case SOUND_AMMUNATION_WELCOME_3:
- emittingVol = maxVolume;
- break;
- default:
- if (CWorld::GetIsLineOfSightClear(TheCamera.GetPosition(), m_sQueueSample.m_vecPos, 1, 0, 0, 0, 0, 0, 0)) {
- emittingVol = maxVolume;
- } else {
- emittingVol = 31;
- }
- break;
- }
- m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, soundIntensity, m_sQueueSample.m_fDistance);
- pedComment.m_nProcess = 10;
- if (m_sQueueSample.m_nVolume) {
- pedComment.m_nEntityIndex = m_sQueueSample.m_nEntityIndex;
- pedComment.m_vecPos = m_sQueueSample.m_vecPos;
- pedComment.m_fDistance = m_sQueueSample.m_fDistance;
- pedComment.m_bVolume = m_sQueueSample.m_nVolume;
- m_sPedComments.Add(&pedComment);
- }
- }
- }
+ soundIntensity = 50.0f;
} else {
switch (sound) {
case SOUND_PED_HELI_PLAYER_FOUND:
- soundIntensity = 400.f;
- pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] % 29 + SFX_POLICE_HELI_1;
+ soundIntensity = 400.0f;
+ pedComment.m_nSampleIndex = GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_POLICE_HELI_1, SFX_POLICE_HELI_29);
break;
case SOUND_PED_BODYCAST_HIT:
if (CTimer::GetTimeInMilliseconds() <= gNextCryTime)
return;
- soundIntensity = 50.f;
+ soundIntensity = 50.0f;
gNextCryTime = CTimer::GetTimeInMilliseconds() + 500;
- pedComment.m_nSampleIndex = (m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] & 3) + SFX_PLASTER_BLOKE_1;
+ pedComment.m_nSampleIndex = GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_PLASTER_BLOKE_1, SFX_PLASTER_BLOKE_4);
break;
case SOUND_INJURED_PED_MALE_OUCH:
- case SOUND_8A:
- soundIntensity = 50.f;
- pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] % 15 + SFX_GENERIC_MALE_GRUNT_1;
+ case SOUND_INJURED_PED_MALE_PRISON:
+ soundIntensity = 50.0f;
+ pedComment.m_nSampleIndex = GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_GENERIC_MALE_GRUNT_1, SFX_GENERIC_MALE_GRUNT_15);
break;
case SOUND_INJURED_PED_FEMALE:
- soundIntensity = 50.f;
- pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] % 11 + SFX_GENERIC_FEMALE_GRUNT_1;
+ soundIntensity = 50.0f;
+ pedComment.m_nSampleIndex = GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_GENERIC_FEMALE_GRUNT_1, SFX_GENERIC_FEMALE_GRUNT_11);
break;
default:
return;
}
+ }
- if (params->m_fDistance < SQR(soundIntensity)) {
- CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance);
- if (sound != SOUND_PAGER) {
- switch (sound) {
- case SOUND_AMMUNATION_WELCOME_1:
- case SOUND_AMMUNATION_WELCOME_2:
- case SOUND_AMMUNATION_WELCOME_3:
+ if (params->m_fDistance < SQR(soundIntensity)) {
+ CalculateDistance(params->m_bDistanceCalculated, params->m_fDistance);
+ if (sound != SOUND_PAGER) {
+ switch (sound) {
+ case SOUND_AMMUNATION_WELCOME_1:
+ case SOUND_AMMUNATION_WELCOME_2:
+ case SOUND_AMMUNATION_WELCOME_3:
+ emittingVol = maxVolume;
+ break;
+ default:
+ if (CWorld::GetIsLineOfSightClear(TheCamera.GetPosition(), m_sQueueSample.m_vecPos, true, false, false, false, false, false))
emittingVol = maxVolume;
- break;
- default:
- if (CWorld::GetIsLineOfSightClear(TheCamera.GetPosition(), m_sQueueSample.m_vecPos, 1, 0, 0, 0, 0, 0, 0)) {
- emittingVol = maxVolume;
- } else {
- emittingVol = 31;
- }
- break;
- }
- m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, soundIntensity, m_sQueueSample.m_fDistance);
- pedComment.m_nProcess = 10;
- if (m_sQueueSample.m_nVolume) {
- pedComment.m_nEntityIndex = m_sQueueSample.m_nEntityIndex;
- pedComment.m_vecPos = m_sQueueSample.m_vecPos;
- pedComment.m_fDistance = m_sQueueSample.m_fDistance;
- pedComment.m_bVolume = m_sQueueSample.m_nVolume;
- m_sPedComments.Add(&pedComment);
- }
+ else
+ emittingVol = 31;
+ break;
+ }
+ m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, soundIntensity, m_sQueueSample.m_fDistance);
+ pedComment.m_nProcess = 10;
+ if (m_sQueueSample.m_nVolume != 0) {
+ pedComment.m_nEntityIndex = m_sQueueSample.m_nEntityIndex;
+ pedComment.m_vecPos = m_sQueueSample.m_vecPos;
+ pedComment.m_fDistance = m_sQueueSample.m_fDistance;
+ pedComment.m_bVolume = m_sQueueSample.m_nVolume;
+ m_sPedComments.Add(&pedComment);
}
}
}
@@ -9771,8 +9740,8 @@ cAudioManager::UsesSirenSwitching(int32 model) const
void
cAudioManager::AdjustSamplesVolume()
{
- for (int i = 0; i < m_SampleRequestQueuesStatus[m_bActiveSampleQueue]; i++) {
- tSound *pSample = &m_asSamples[m_bActiveSampleQueue][m_abSampleQueueIndexTable[m_bActiveSampleQueue][i] + 1];
+ for (int i = 0; i < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; i++) {
+ tSound *pSample = &m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i] + 1];
if (!pSample->m_bIs2D)
pSample->m_nEmittingVolume = ComputeEmittingVolume(pSample->m_nEmittingVolume, pSample->m_fSoundIntensity, pSample->m_fDistance);
diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h
index 66d0e588..ccef42ff 100644
--- a/src/audio/AudioManager.h
+++ b/src/audio/AudioManager.h
@@ -167,7 +167,7 @@ public:
bool m_bTimerJustReset;
int32 m_nTimer;
tSound m_sQueueSample;
- bool m_bActiveSampleQueue;
+ uint8 m_nActiveSampleQueue;
tSound m_asSamples[NUM_SOUNDS_SAMPLES_BANKS][NUM_SOUNDS_SAMPLES_SLOTS];
uint8 m_abSampleQueueIndexTable[NUM_SOUNDS_SAMPLES_BANKS][NUM_SOUNDS_SAMPLES_SLOTS];
uint8 m_SampleRequestQueuesStatus[NUM_SOUNDS_SAMPLES_BANKS];
@@ -202,6 +202,7 @@ public:
uint32 GetFrameCounter() const { return m_FrameCounter; }
float GetReflectionsDistance(int32 idx) const { return m_afReflectionsDistances[idx]; }
int32 GetRandomNumber(int32 idx) const { return m_anRandomTable[idx]; }
+ int32 GetRandomNumberInRange(int32 idx, int32 low, int32 high) const { return (m_anRandomTable[idx] % (high - low + 1)) + low; }
bool IsMissionAudioPlaying() const { return m_sMissionAudio.m_nPlayStatus == 1; }
// "Should" be in alphabetic order, except "getXTalkSfx"
diff --git a/src/audio/soundlist.h b/src/audio/soundlist.h
index 364f4655..64d7dbcb 100644
--- a/src/audio/soundlist.h
+++ b/src/audio/soundlist.h
@@ -140,7 +140,7 @@ enum eSound : int16
SOUND_PED_TAXI_CALL = 135,
SOUND_INJURED_PED_MALE_OUCH = 136,
SOUND_INJURED_PED_FEMALE = 137,
- SOUND_8A = 138,
+ SOUND_INJURED_PED_MALE_PRISON = 138,
SOUND_RACE_START_3 = 139,
SOUND_RACE_START_2 = 140,
SOUND_RACE_START_1 = 141,