Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 2 additions & 23 deletions Client/game_sa/CAEVehicleAudioEntitySA.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

#pragma once

#include "CVehicleAudioSettingsEntrySA.h"
#include <game/CAEVehicleAudioEntity.h>
#include "CAudioEngineSA.h"

Expand All @@ -20,29 +21,6 @@
#define FUNC_CAEVehicleAudioEntity__ProcessAIProp 0x4FDFD0
#define FUNC_CAEVehicleAudioEntity__ProcessAIHeli 0x4FEE20

struct tVehicleAudioSettings
{
char m_nVehicleSoundType;
char unk1;
short m_wEngineOnSoundBankId;
short m_wEngineOffSoundBankId;
char m_nStereo;
char unk2;
int unk3;
int unk4;
char m_bHornTon;
char unk5[3];
float m_fHornHigh;
char m_nDoorSound;
char unk6;
char m_nRadioNum;
char m_nRadioType;
char unk7;
char unk8[3];
float m_fHornVolumeDelta;
};
static_assert(sizeof(tVehicleAudioSettings) == 0x24, "Invalid size for tVehicleAudioSettings");

struct tVehicleSound
{
int m_dwIndex;
Expand Down Expand Up @@ -152,6 +130,7 @@ class CAEVehicleAudioEntitySA : public CAEVehicleAudioEntity
void JustGotOutOfVehicleAsDriver();
void TurnOnRadioForVehicle();
void StopVehicleEngineSound(unsigned char ucSlot);
CAEVehicleAudioEntitySAInterface* GetInterface() { return m_pInterface; };

private:
CAEVehicleAudioEntitySAInterface* m_pInterface;
Expand Down
2 changes: 2 additions & 0 deletions Client/game_sa/CGameSA.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ CGameSA::CGameSA()
m_pWeaponStatsManager = new CWeaponStatManagerSA();
m_pPointLights = new CPointLightsSA();
m_collisionStore = new CColStoreSA();
this->m_pVehicleAudioSettingsManager = new CVehicleAudioSettingsManagerSA();

// Normal weapon types (WEAPONSKILL_STD)
for (int i = 0; i < NUM_WeaponInfosStdSkill; i++)
Expand Down Expand Up @@ -293,6 +294,7 @@ CGameSA::~CGameSA()
delete reinterpret_cast<CAEAudioHardwareSA*>(m_pAEAudioHardware);
delete reinterpret_cast<CAudioContainerSA*>(m_pAudioContainer);
delete reinterpret_cast<CPointLightsSA*>(m_pPointLights);
delete reinterpret_cast<CVehicleAudioSettingsManagerSA*>(m_pVehicleAudioSettingsManager);
delete static_cast<CColStoreSA*>(m_collisionStore);

delete[] ModelInfo;
Expand Down
4 changes: 3 additions & 1 deletion Client/game_sa/CGameSA.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ class CGameSA : public CGame
CColStore* GetCollisionStore() override { return m_collisionStore; }
CRenderWareSA* GetRenderWareSA() { return m_pRenderWare; }
CFxManagerSA* GetFxManagerSA() { return m_pFxManager; }
CVehicleAudioSettingsManager* GetVehicleAudioSettingsManager() { return m_pVehicleAudioSettingsManager; }

CWeaponInfo* GetWeaponInfo(eWeaponType weapon, eWeaponSkill skill = WEAPONSKILL_STD);
CModelInfo* GetModelInfo(DWORD dwModelID, bool bCanBeInvalid = false);
Expand Down Expand Up @@ -319,7 +320,8 @@ class CGameSA : public CGame
CTasks* m_pTasks;
CGameSettings* m_pSettings;
CCarEnterExit* m_pCarEnterExit;
CControllerConfigManager* m_pControllerConfigManager;
CControllerConfigManager* m_pControllerConfigManager;
CVehicleAudioSettingsManager* m_pVehicleAudioSettingsManager;

eGameVersion m_eGameVersion;
bool m_bAsyncScriptEnabled;
Expand Down
30 changes: 30 additions & 0 deletions Client/game_sa/CVehicleAudioSettingsEntrySA.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*****************************************************************************
*
* PROJECT: Multi Theft Auto v1.0
* LICENSE: See LICENSE in the top level directory
* FILE: game_sa/CVehicleAudioSettingsEntrySA.cpp
* PURPOSE: Implementation file for vehicle audio settings entry class
*
* Multi Theft Auto is available from http://www.multitheftauto.com/
*
*****************************************************************************/

#include "StdInc.h"
#include "CVehicleAudioSettingsEntrySA.h"

CVehicleAudioSettingsEntrySA::CVehicleAudioSettingsEntrySA()
{
memset(&m_Settings, 0, sizeof(tVehicleAudioSettings));
}

CVehicleAudioSettingsEntrySA::CVehicleAudioSettingsEntrySA(tVehicleAudioSettings* pSettingsEntry)
{
m_Settings = *pSettingsEntry;
}

void CVehicleAudioSettingsEntrySA::Assign(const CVehicleAudioSettingsEntry* pData)
{
const CVehicleAudioSettingsEntrySA* pEntrySA = static_cast<const CVehicleAudioSettingsEntrySA*>(pData);

m_Settings = pEntrySA->m_Settings;
}
83 changes: 83 additions & 0 deletions Client/game_sa/CVehicleAudioSettingsEntrySA.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
/*****************************************************************************
*
* PROJECT: Multi Theft Auto v1.0
* LICENSE: See LICENSE in the top level directory
* FILE: game_sa/CVehicleAudioSettingsEntrySA.h
* PURPOSE: Header file for vehicle audio settings entry class
*
* Multi Theft Auto is available from http://www.multitheftauto.com/
*
*****************************************************************************/

#pragma once

#include "game/CVehicleAudioSettingsEntry.h"
#include <game/Common.h>

struct tVehicleAudioSettings
{
eVehicleSoundType m_eVehicleSoundType;
char unk1;
short m_wEngineOnSoundBankId;
short m_wEngineOffSoundBankId;
char m_nStereo; // 0 or 1 or 2
char unk2;
float unk3;
float unk4;
char m_bHornTon;
char unk5[3];
float m_fHornHigh;
char m_nDoorSound;
char unk6;
char m_nRadioNum;
char m_nRadioType;
char m_nVehTypeForAudio;
char unk8[3];
float m_fHornVolumeDelta;
};
static_assert(sizeof(tVehicleAudioSettings) == 0x24, "Invalid size for tVehicleAudioSettings");

class CVehicleAudioSettingsEntrySA : public CVehicleAudioSettingsEntry
{
public:
CVehicleAudioSettingsEntrySA();
CVehicleAudioSettingsEntrySA(tVehicleAudioSettings* pSettings);
~CVehicleAudioSettingsEntrySA() = default;

tVehicleAudioSettings* getInterface() { return &m_Settings; };

void Assign(const CVehicleAudioSettingsEntry* pData);

eVehicleSoundType GetSoundType() { return m_Settings.m_eVehicleSoundType; };
short GetEngineOnSoundBankID() { return m_Settings.m_wEngineOnSoundBankId; };
short GetEngineOffSoundBankID() { return m_Settings.m_wEngineOffSoundBankId; };
char GetStereo() { return m_Settings.m_nStereo; };
float GetUnk3() { return m_Settings.unk3; };
float GetUnk4() { return m_Settings.unk4; };
char GetHornTon() { return m_Settings.m_bHornTon; };
float GetHornHign() { return m_Settings.m_fHornHigh; };
char GetUnk6() { return m_Settings.unk6; };
char GetDoorSound() { return m_Settings.m_nDoorSound; };
char GetRadioNum() { return m_Settings.m_nRadioNum; };
char GetRadioType() { return m_Settings.m_nRadioType; };
char GetVehicleTypeForAudio() { return m_Settings.m_nVehTypeForAudio; };
float GetHornVolumeDelta() { return m_Settings.m_fHornVolumeDelta; };

void SetSoundType(eVehicleSoundType value) { m_Settings.m_eVehicleSoundType = value; };
void SetEngineOnSoundBankID(short value) { m_Settings.m_wEngineOnSoundBankId = value; };
void SetEngineOffSoundBankID(short value) { m_Settings.m_wEngineOffSoundBankId = value; };
void SetStereo(char value) { m_Settings.m_nStereo = value; };
void SetUnk3(float value) { m_Settings.unk3= value; };
void SetUnk4(float value) { m_Settings.unk4= value; };
void SetHornTon(char value) { m_Settings.m_bHornTon = value; };
void SetHornHign(float value) { m_Settings.m_fHornHigh = value; };
void SetUnk6(char value) { m_Settings.unk6= value; };
void SetDoorSound(char value) { m_Settings.m_nDoorSound = value; };
void SetRadioNum(char value) { m_Settings.m_nRadioNum = value; };
void SetRadioType(char value) { m_Settings.m_nRadioType = value; };
void SetVehicleTypeForAudio(char value) { m_Settings.m_nVehTypeForAudio = value; };
void SetHornVolumeDelta(float value) { m_Settings.m_fHornVolumeDelta = value; };

private:
tVehicleAudioSettings m_Settings;
};
Loading