diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp index 99c87a6a..fecd079e 100644 --- a/src/audio/AudioCollision.cpp +++ b/src/audio/AudioCollision.cpp @@ -10,6 +10,22 @@ const int CollisionSoundIntensity = 60; +cAudioCollisionManager::cAudioCollisionManager() +{ + m_sQueue.m_pEntity1 = nil; + m_sQueue.m_pEntity2 = nil; + m_sQueue.m_bSurface1 = SURFACE_DEFAULT; + m_sQueue.m_bSurface2 = SURFACE_DEFAULT; + m_sQueue.m_fIntensity2 = 0.0f; + m_sQueue.m_fIntensity1 = 0.0f; + m_sQueue.m_vecPosition = CVector(0.0f, 0.0f, 0.0f); + + for (int i = 0; i < NUMAUDIOCOLLISIONS; i++) + m_bIndicesTable[i] = NUMAUDIOCOLLISIONS; + + m_bCollisionsInQueue = 0; +} + void cAudioCollisionManager::AddCollisionToRequestedQueue() { diff --git a/src/audio/AudioCollision.h b/src/audio/AudioCollision.h index 956da3e3..a21bbfdc 100644 --- a/src/audio/AudioCollision.h +++ b/src/audio/AudioCollision.h @@ -29,8 +29,8 @@ public: uint8 m_bCollisionsInQueue; cAudioCollision m_sQueue; - // reversed all methods - void AddCollisionToRequestedQueue(); /// ok + cAudioCollisionManager(); + void AddCollisionToRequestedQueue(); }; static_assert(sizeof(cAudioCollisionManager) == 852, "cAudioCollisionManager: error"); \ No newline at end of file diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 3ac194fe..1d2835cf 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -39,7 +39,7 @@ #include "ZoneCull.h" #include "sampman.h" -cAudioManager &AudioManager = *(cAudioManager *)0x880FC0; +cAudioManager AudioManager; uint32 gPornNextTime; // = *(uint32*)0x6508A0; uint32 gSawMillNextTime; // = *(uint32*)0x6508A4; uint32 gShopNextTime; // = *(uint32*)0x6508A8; @@ -192,6 +192,19 @@ enum PLAY_STATUS : uint8 { enum LOADING_STATUS : uint8 { LOADING_STATUS_NOT_LOADED = 0, LOADING_STATUS_LOADED = 1 }; +cPedComments::cPedComments() +{ + for (int i = 0; i < NUM_PED_COMMENTS_SLOTS; i++) + for (int j = 0; j < NUM_PED_COMMENTS_BANKS; j++) { + m_asPedComments[j][i].m_nProcess = -1; + m_nIndexMap[j][i] = NUM_PED_COMMENTS_SLOTS; + } + + for (int i = 0; i < NUM_PED_COMMENTS_BANKS; i++) + m_nCommentsInBank[i] = 0; + m_nActiveBank = 0; +} + void cPedComments::Add(tPedComment *com) { @@ -322,9 +335,9 @@ cPedComments::Process() cAudioManager::cAudioManager() { - m_bIsInitialised = 0; + m_bIsInitialised = false; field_1 = 1; - m_fSpeedOfSound = 6.8600001f; + m_fSpeedOfSound = 6.86f; m_bTimeSpent = 50; m_bActiveSamples = NUM_SOUNDS_SAMPLES_SLOTS; m_bActiveSampleQueue = 1; @@ -350,7 +363,6 @@ cAudioManager::cAudioManager() cAudioManager::~cAudioManager() { if(m_bIsInitialised) Terminate(); - m_nScriptObjectEntityTotal = 0; } void @@ -711,7 +723,7 @@ cAudioManager::DestroyAllGameCreatedEntities() } } } - m_nScriptObjectEntityTotal = 0; + m_sAudioScriptObjectManager.m_nScriptObjectEntityTotal = 0; } } @@ -2714,8 +2726,8 @@ cAudioManager::GenerateIntegerRandomNumberTable() char * cAudioManager::Get3DProviderName(uint8 id) const { - if(!m_bIsInitialised) return 0; - if(id >= SampleManager.GetNum3DProvidersAvailable()) return 0; + if(!m_bIsInitialised) return nil; + if(id >= SampleManager.GetNum3DProvidersAvailable()) return nil; return SampleManager.Get3DProviderName(id); } @@ -3028,12 +3040,12 @@ cAudioManager::PlayOneShot(int32 index, int16 sound, float vol) if(entity.m_bIsUsed) { if(sound < SOUND_TOTAL_SOUNDS) { if(entity.m_nType == AUDIOTYPE_SCRIPTOBJECT) { - if(m_nScriptObjectEntityTotal < - ARRAY_SIZE(m_anScriptObjectEntityIndices)) { + if(m_sAudioScriptObjectManager.m_nScriptObjectEntityTotal < + ARRAY_SIZE(m_sAudioScriptObjectManager.m_anScriptObjectEntityIndices)) { entity.m_awAudioEvent[0] = sound; entity.m_AudioEvents = 1; - m_anScriptObjectEntityIndices - [m_nScriptObjectEntityTotal++] = index; + m_sAudioScriptObjectManager.m_anScriptObjectEntityIndices + [m_sAudioScriptObjectManager.m_nScriptObjectEntityTotal++] = index; } } else { int32 i = 0; @@ -9588,15 +9600,15 @@ cAudioManager::ServiceSoundEffects() ProcessMissionAudio(); AdjustSamplesVolume(); ProcessActiveQueues(); - for(int32 i = 0; i < m_nScriptObjectEntityTotal; ++i) { + for(int32 i = 0; i < m_sAudioScriptObjectManager.m_nScriptObjectEntityTotal; ++i) { cAudioScriptObject *object = - (cAudioScriptObject *)m_asAudioEntities[m_anScriptObjectEntityIndices[i]] + (cAudioScriptObject *)m_asAudioEntities[m_sAudioScriptObjectManager.m_anScriptObjectEntityIndices[i]] .m_pEntity; delete object; - m_asAudioEntities[m_anScriptObjectEntityIndices[i]].m_pEntity = nil; - DestroyEntity(m_anScriptObjectEntityIndices[i]); + m_asAudioEntities[m_sAudioScriptObjectManager.m_anScriptObjectEntityIndices[i]].m_pEntity = nil; + DestroyEntity(m_sAudioScriptObjectManager.m_anScriptObjectEntityIndices[i]); } - m_nScriptObjectEntityTotal = 0; + m_sAudioScriptObjectManager.m_nScriptObjectEntityTotal = 0; } int8 @@ -9965,7 +9977,7 @@ cAudioManager::Terminate() } m_nAudioEntitiesTotal = 0; - m_nScriptObjectEntityTotal = 0; + m_sAudioScriptObjectManager.m_nScriptObjectEntityTotal = 0; PreTerminateGameSpecificShutdown(); for(uint32 i = 0; i < DIGITALCHANNELS; i++) { @@ -9974,7 +9986,7 @@ cAudioManager::Terminate() SampleManager.Terminate(); - m_bIsInitialised = 0; + m_bIsInitialised = false; PostTerminateGameSpecificShutdown(); } } diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 07c669ed..31a07f9b 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -197,7 +197,7 @@ public: bool m_bIsUsed; uint8 m_bStatus; int16 m_awAudioEvent[NUM_AUDIOENTITY_EVENTS]; - uint8 gap_18[2]; + //uint8 gap_18[2]; float m_afVolume[NUM_AUDIOENTITY_EVENTS]; uint8 m_AudioEvents; uint8 field_25[3]; @@ -216,7 +216,6 @@ public: float m_fDistance; uint8 m_bVolume; int8 m_nProcess; - uint8 gap_26[2]; // unused // no methods }; @@ -230,9 +229,8 @@ public: uint8 m_nIndexMap[NUM_PED_COMMENTS_BANKS][NUM_PED_COMMENTS_SLOTS]; uint8 m_nCommentsInBank[NUM_PED_COMMENTS_BANKS]; uint8 m_nActiveBank; - uint8 gap_1163[1]; // unused - // reversed all methods + cPedComments(); void Add(tPedComment *com); void Process(); }; @@ -246,7 +244,7 @@ class cMissionAudio public: CVector m_vecPos; bool m_bPredefinedProperties; - uint8 gap_13[3]; // unused + //uint8 gap_13[3]; int m_nSampleIndex; uint8 m_bLoadingStatus; uint8 m_bPlayStatus; @@ -262,6 +260,18 @@ public: static_assert(sizeof(cMissionAudio) == 32, "cMissionAudio: error"); +// name made up +class cAudioScriptObjectManager +{ +public: + int32 m_anScriptObjectEntityIndices[NUM_SCRIPT_MAX_ENTITIES]; + int32 m_nScriptObjectEntityTotal; + + cAudioScriptObjectManager() { m_nScriptObjectEntityTotal = 0; } + ~cAudioScriptObjectManager() { m_nScriptObjectEntityTotal = 0; } +}; + + class cVehicleParams; class CPlane; class CVehicle; @@ -315,8 +325,7 @@ public: int32 m_nAudioEntitiesTotal; CVector m_avecReflectionsPos[NUM_AUDIO_REFLECTIONS]; float m_afReflectionsDistances[NUM_AUDIO_REFLECTIONS]; - int32 m_anScriptObjectEntityIndices[NUM_SCRIPT_MAX_ENTITIES]; - int32 m_nScriptObjectEntityTotal; + cAudioScriptObjectManager m_sAudioScriptObjectManager; cPedComments m_sPedComments; int32 m_nFireAudioEntity; int32 m_nWaterCannonEntity; @@ -611,4 +620,4 @@ public: static_assert(sizeof(cAudioManager) == 19220, "cAudioManager: error"); -extern cAudioManager &AudioManager; +extern cAudioManager AudioManager;