From da253837d162686627c64f0faaedd5549db444da Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 25 Jan 2020 12:41:22 +0200 Subject: audio stuff Collision audio and police radio stuff moved to a separate cpp's like in the original code cPoliceRadioQueue added, code refactored correspondingly cAudioManager::ServiceCollisions reversed PlayOneShotScriptObject reversed cAudioScriptObject moved to AudioScriptObject.cpp Fixed use of numbers on non-integer types (bools, pointers) enum is now used for ped audio calculation Added fixes for vehicle description in the police radio (missing vehicles and wrong colors) --- src/audio/AudioScriptObject.cpp | 47 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) (limited to 'src/audio/AudioScriptObject.cpp') diff --git a/src/audio/AudioScriptObject.cpp b/src/audio/AudioScriptObject.cpp index a8c645d4..c5115ddb 100644 --- a/src/audio/AudioScriptObject.cpp +++ b/src/audio/AudioScriptObject.cpp @@ -1,7 +1,48 @@ #include "common.h" +#include "patcher.h" #include "AudioScriptObject.h" +#include "Pools.h" -void PlayOneShotScriptObject(uint8 id, CVector const &pos) +void +cAudioScriptObject::Reset() { - ((void (__cdecl *)(uint8, CVector const &))0x57C5F0)(id, pos); -} \ No newline at end of file + AudioId = 125; + Posn = CVector(0.0f, 0.0f, 0.0f); + AudioEntity = AEHANDLE_NONE; +} + +void * +cAudioScriptObject::operator new(size_t sz) +{ + return CPools::GetAudioScriptObjectPool()->New(); +} +void * +cAudioScriptObject::operator new(size_t sz, int handle) +{ + return CPools::GetAudioScriptObjectPool()->New(handle); +} +void +cAudioScriptObject::operator delete(void *p, size_t sz) +{ + CPools::GetAudioScriptObjectPool()->Delete((cAudioScriptObject *)p); +} +void +cAudioScriptObject::operator delete(void *p, int handle) +{ + CPools::GetAudioScriptObjectPool()->Delete((cAudioScriptObject *)p); +} + +void +PlayOneShotScriptObject(uint8 id, CVector const &pos) +{ + cAudioScriptObject *audioScriptObject = new cAudioScriptObject(); + audioScriptObject->Posn = pos; + audioScriptObject->AudioId = id; + audioScriptObject->AudioEntity = AEHANDLE_NONE; + DMAudio.CreateOneShotScriptObject(audioScriptObject); +} + +STARTPATCHES +InjectHook(0x57C430, &cAudioScriptObject::Reset, PATCH_JUMP); +InjectHook(0x57C5F0, &PlayOneShotScriptObject, PATCH_JUMP); +ENDPATCHES \ No newline at end of file -- cgit v1.2.3