From ccdb36d7891fc8cb4d912367977e7c91299bf140 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Tue, 21 Sep 2021 08:43:41 +0300 Subject: [PATCH] Audio: hack to fix camera sound in Martha's Mug Shot --- src/audio/AudioLogic.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index effb8ab3..e7432612 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -10002,6 +10002,12 @@ cAudioManager::PreloadMissionAudio(uint8 slot, Const char *name) if (m_bIsInitialised && slot < MISSION_AUDIO_SLOTS) { uint32 missionAudioSfx = FindMissionAudioSfx(name); if (missionAudioSfx != NO_SAMPLE) { +// HACK: do not reload camera sound if it's already loaded +#if !defined GTA_PS2 && defined FIX_BUGS + if ((m_nMissionAudioSampleIndex[slot] == SFX_MISSION_CAMERAL && missionAudioSfx == SFX_MISSION_CAMERAL) || + (m_nMissionAudioSampleIndex[slot] == SFX_MISSION_CAMERAR && missionAudioSfx == SFX_MISSION_CAMERAR)) + return; +#endif m_nMissionAudioSampleIndex[slot] = missionAudioSfx; m_nMissionAudioLoadingStatus[slot] = LOADING_STATUS_NOT_LOADED; m_nMissionAudioPlayStatus[slot] = PLAY_STATUS_STOPPED; @@ -10307,8 +10313,16 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot) #ifndef GTA_PS2 if (m_nMissionAudioSampleIndex[slot] == SFX_MISSION_ROK2_01) m_nMissionAudioPlayStatus[slot] = PLAY_STATUS_STOPPED; +#ifdef FIX_BUGS + // HACK: reset sound states for camera sound as if it was just loaded + else if (m_nMissionAudioSampleIndex[slot] == SFX_MISSION_CAMERAL || m_nMissionAudioSampleIndex[slot] == SFX_MISSION_CAMERAR) { + m_nMissionAudioLoadingStatus[slot] = LOADING_STATUS_LOADED; + m_nMissionAudioPlayStatus[slot] = PLAY_STATUS_STOPPED; + m_bIsMissionAudioAllowedToPlay[slot] = FALSE; + } +#endif // FIX_BUGS else -#endif +#endif // !GTA_PS2 { m_nMissionAudioPlayStatus[slot] = PLAY_STATUS_FINISHED; if (m_nMissionAudioSampleIndex[slot] >= SFX_MISSION_MOB_01A && m_nMissionAudioSampleIndex[slot] <= SFX_MISSION_MOB_99A)