From c41239ed5e44cfd4f54d9478c1b08efd94e1338e Mon Sep 17 00:00:00 2001
From: Sergeanur <s.anureev@yandex.ua>
Date: Thu, 2 Sep 2021 08:00:04 +0300
Subject: Ped comments fixes

---
 src/audio/AudioLogic.cpp | 16 +++++++++-------
 src/audio/AudioManager.h |  4 ++--
 2 files changed, 11 insertions(+), 9 deletions(-)

(limited to 'src')

diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp
index 0101d94f..4b232126 100644
--- a/src/audio/AudioLogic.cpp
+++ b/src/audio/AudioLogic.cpp
@@ -3865,7 +3865,7 @@ cAudioManager::SetupPedComments(cPedParams &params, uint16 sound)
 				break;
 			}
 			m_sQueueSample.m_nVolume = ComputeVolume(Vol, maxDist, m_sQueueSample.m_fDistance);
-			pedComment.m_nProcess = 10;
+			pedComment.m_nLoadingTimeout = 10;
 			if (m_sQueueSample.m_nVolume > 0) {
 				pedComment.m_nEntityIndex = m_sQueueSample.m_nEntityIndex;
 				pedComment.m_vecPos = m_sQueueSample.m_vecPos;
@@ -3880,7 +3880,7 @@ cAudioManager::SetupPedComments(cPedParams &params, uint16 sound)
 #ifdef GTA_PS2
 		else {
 			m_sQueueSample.m_nVolume = MAX_VOLUME;
-			pedComment.m_nProcess = 40;
+			pedComment.m_nLoadingTimeout = 40;
 		}
 #endif
 	}
@@ -6290,11 +6290,13 @@ cPedComments::Process()
 
 	if (m_nPedCommentCount[m_nActiveQueue]) {
 		sampleIndex = m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_nSampleIndex;
-		switch (SampleManager.IsPedCommentLoaded(sampleIndex)) // yes, this was a switch
+		switch (SampleManager.IsPedCommentLoaded(sampleIndex))
 		{
 		case LOADING_STATUS_NOT_LOADED:
 			SampleManager.LoadPedComment(sampleIndex);
-			// BUG? no break, VC has break in here
+#ifdef GTA_PS2 // on PC ped comment is loaded at once
+			break;
+#endif
 		case LOADING_STATUS_LOADED:
 			AudioManager.m_sQueueSample.m_nEntityIndex = m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_nEntityIndex;
 			AudioManager.m_sQueueSample.m_nCounter = 0;
@@ -6391,7 +6393,7 @@ cPedComments::Process()
 			if (CTimer::GetIsSlowMotionActive())
 				AudioManager.m_sQueueSample.m_nFrequency >>= 1;
 #endif
-			m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_nProcess = -1;
+			m_aPedCommentQueue[m_nActiveQueue][m_aPedCommentOrderList[m_nActiveQueue][0]].m_nLoadingTimeout = -1;
 			AudioManager.AddSampleToRequestedQueue();
 			break;
 		case LOADING_STATUS_LOADING: break;
@@ -6408,8 +6410,8 @@ cPedComments::Process()
 		m_nActiveQueue = 0;
 	}
 	for (uint8 i = 0; i < m_nPedCommentCount[queue]; i++) {
-		if (m_aPedCommentQueue[queue][m_aPedCommentOrderList[queue][i]].m_nProcess > 0) {
-			m_aPedCommentQueue[queue][m_aPedCommentOrderList[queue][i]].m_nProcess--;
+		if (m_aPedCommentQueue[queue][m_aPedCommentOrderList[queue][i]].m_nLoadingTimeout > 0) {
+			m_aPedCommentQueue[queue][m_aPedCommentOrderList[queue][i]].m_nLoadingTimeout--;
 			Add(&m_aPedCommentQueue[queue][m_aPedCommentOrderList[queue][i]]);
 		}
 	}
diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h
index 70ced49a..79839871 100644
--- a/src/audio/AudioManager.h
+++ b/src/audio/AudioManager.h
@@ -96,7 +96,7 @@ public:
 	CVector m_vecPos;
 	float m_fDistance;
 	uint8 m_nVolume;
-	int8 m_nProcess;
+	int8 m_nLoadingTimeout; // how many iterations we gonna wait until dropping the sample if it's still not loaded (only useful on PS2)
 #if defined(EXTERNAL_3D_SOUND) && defined(FIX_BUGS)
 	uint8 m_nEmittingVolume;
 #endif
@@ -116,7 +116,7 @@ public:
 	{
 		for (int i = 0; i < NUM_PED_COMMENTS_SLOTS; i++)
 			for (int j = 0; j < NUM_SOUND_QUEUES; j++) {
-				m_aPedCommentQueue[j][i].m_nProcess = -1;
+				m_aPedCommentQueue[j][i].m_nLoadingTimeout = -1;
 				m_aPedCommentOrderList[j][i] = NUM_PED_COMMENTS_SLOTS;
 			}
 
-- 
cgit v1.2.3-70-g09d2