mirror of
https://git.rip/DMCA_FUCKER/re3.git
synced 2024-12-23 19:10:01 +00:00
Merge branch 'miami' of https://github.com/GTAmodding/re3 into miami
This commit is contained in:
commit
8f948228d5
|
@ -657,7 +657,7 @@ CCutsceneMgr::RemoveEverythingFromTheWorldForTheBiggestFuckoffCutsceneEver()
|
||||||
|
|
||||||
for (int i = CPools::GetBuildingPool()->GetSize() - 1; i >= 0; i--) {
|
for (int i = CPools::GetBuildingPool()->GetSize() - 1; i >= 0; i--) {
|
||||||
CBuilding* pBuilding = CPools::GetBuildingPool()->GetSlot(i);
|
CBuilding* pBuilding = CPools::GetBuildingPool()->GetSlot(i);
|
||||||
if (pBuilding && pBuilding->GetClump() != nil && pBuilding->bIsBIGBuilding && pBuilding->bStreamBIGBuilding) {
|
if (pBuilding && pBuilding->m_rwObject != nil && pBuilding->bIsBIGBuilding && pBuilding->bStreamBIGBuilding) {
|
||||||
if (pBuilding->bIsBIGBuilding)
|
if (pBuilding->bIsBIGBuilding)
|
||||||
CStreaming::RequestModel(pBuilding->GetModelIndex(), 0);
|
CStreaming::RequestModel(pBuilding->GetModelIndex(), 0);
|
||||||
if (!pBuilding->bImBeingRendered)
|
if (!pBuilding->bImBeingRendered)
|
||||||
|
|
|
@ -57,4 +57,5 @@ public:
|
||||||
static void AttachObjectToFrame(CObject *pObject, CEntity *pAttachTo, const char *frame);
|
static void AttachObjectToFrame(CObject *pObject, CEntity *pAttachTo, const char *frame);
|
||||||
static void AttachObjectToBone(CObject *pObject, CObject *pAttachTo, int frame);
|
static void AttachObjectToBone(CObject *pObject, CObject *pAttachTo, int frame);
|
||||||
static void RemoveEverythingFromTheWorldForTheBiggestFuckoffCutsceneEver();
|
static void RemoveEverythingFromTheWorldForTheBiggestFuckoffCutsceneEver();
|
||||||
|
static void DisableCutsceneShadows() { ms_useCutsceneShadows = false; }
|
||||||
};
|
};
|
||||||
|
|
|
@ -294,6 +294,18 @@ cAudioManager::CalculateDistance(bool &distCalculated, float dist)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CVehicle *cAudioManager::FindVehicleOfPlayer()
|
||||||
|
{
|
||||||
|
CVehicle* vehicle = FindPlayerVehicle();
|
||||||
|
CPlayerPed* ped = FindPlayerPed();
|
||||||
|
if (vehicle == nil && ped != nil) {
|
||||||
|
CEntity *attachedTo = ped->m_attachedTo;
|
||||||
|
if (attachedTo && attachedTo->IsVehicle())
|
||||||
|
vehicle = (CVehicle*)attachedTo;
|
||||||
|
}
|
||||||
|
return vehicle;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cAudioManager::ProcessSpecial()
|
cAudioManager::ProcessSpecial()
|
||||||
{
|
{
|
||||||
|
@ -3976,6 +3988,25 @@ cAudioManager::ProcessPedOneShots(cPedParams *params)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cAudioManager::SetPedTalkingStatus(CPed *ped, uint8 status)
|
||||||
|
{
|
||||||
|
if (ped != nil)
|
||||||
|
ped->m_canTalk = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cAudioManager::SetPlayersMood(uint8 mood, int32 time)
|
||||||
|
{
|
||||||
|
if (!m_bIsInitialised) return;
|
||||||
|
|
||||||
|
if (mood < MAX_PLAYER_MOODS) {
|
||||||
|
m_nPlayerMood = mood;
|
||||||
|
m_nPlayerMoodTimer = CTimer::GetTimeInMilliseconds() + time;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cAudioManager::SetupPedComments(cPedParams *params, uint32 sound)
|
cAudioManager::SetupPedComments(cPedParams *params, uint32 sound)
|
||||||
{
|
{
|
||||||
|
|
|
@ -216,6 +216,12 @@ cAudioManager::PlayOneShot(int32 index, int16 sound, float vol)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cAudioManager::SetMP3BoostVolume(uint8 volume) const
|
||||||
|
{
|
||||||
|
SampleManager.SetMP3BoostVolume(volume);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cAudioManager::SetEffectsMasterVolume(uint8 volume) const
|
cAudioManager::SetEffectsMasterVolume(uint8 volume) const
|
||||||
{
|
{
|
||||||
|
@ -336,6 +342,15 @@ cAudioManager::GetCurrent3DProviderIndex() const
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int8
|
||||||
|
cAudioManager::AutoDetect3DProviders() const
|
||||||
|
{
|
||||||
|
if (m_bIsInitialised)
|
||||||
|
return SampleManager.AutoDetect3DProviders();
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
int8
|
int8
|
||||||
cAudioManager::SetCurrent3DProvider(uint8 which)
|
cAudioManager::SetCurrent3DProvider(uint8 which)
|
||||||
{
|
{
|
||||||
|
@ -420,6 +435,7 @@ cAudioManager::IsAudioInitialised() const
|
||||||
void
|
void
|
||||||
cAudioManager::ServiceSoundEffects()
|
cAudioManager::ServiceSoundEffects()
|
||||||
{
|
{
|
||||||
|
field_5554++;
|
||||||
m_bFifthFrameFlag = (m_FrameCounter++ % 5) == 0;
|
m_bFifthFrameFlag = (m_FrameCounter++ % 5) == 0;
|
||||||
if (m_nUserPause && !m_nPreviousUserPause) {
|
if (m_nUserPause && !m_nPreviousUserPause) {
|
||||||
for (int32 i = 0; i < allChannels; i++)
|
for (int32 i = 0; i < allChannels; i++)
|
||||||
|
|
|
@ -197,9 +197,9 @@ public:
|
||||||
cAudioScriptObjectManager m_sAudioScriptObjectManager;
|
cAudioScriptObjectManager m_sAudioScriptObjectManager;
|
||||||
|
|
||||||
// miami
|
// miami
|
||||||
uint8 field_4B30;
|
uint8 m_bIsPlayerShutUp;
|
||||||
uint8 m_bPlayerMood;
|
uint8 m_nPlayerMood;
|
||||||
uint32 field_4B34;
|
uint32 m_nPlayerMoodTimer;
|
||||||
uint8 field_rest[4];
|
uint8 field_rest[4];
|
||||||
uint8 field_4B3C;
|
uint8 field_4B3C;
|
||||||
|
|
||||||
|
@ -270,6 +270,7 @@ public:
|
||||||
char *Get3DProviderName(uint8 id) const;
|
char *Get3DProviderName(uint8 id) const;
|
||||||
uint8 GetCDAudioDriveLetter() const;
|
uint8 GetCDAudioDriveLetter() const;
|
||||||
int8 GetCurrent3DProviderIndex() const;
|
int8 GetCurrent3DProviderIndex() const;
|
||||||
|
int8 AutoDetect3DProviders() const;
|
||||||
float GetCollisionLoopingRatio(uint32 a, uint32 b, float c) const; // not used
|
float GetCollisionLoopingRatio(uint32 a, uint32 b, float c) const; // not used
|
||||||
float GetCollisionOneShotRatio(int32 a, float b) const;
|
float GetCollisionOneShotRatio(int32 a, float b) const;
|
||||||
float GetCollisionRatio(float a, float b, float c, float d) const;
|
float GetCollisionRatio(float a, float b, float c, float d) const;
|
||||||
|
@ -388,6 +389,7 @@ public:
|
||||||
void SetDynamicAcousticModelingStatus(uint8 status);
|
void SetDynamicAcousticModelingStatus(uint8 status);
|
||||||
void SetEffectsFadeVol(uint8 volume) const;
|
void SetEffectsFadeVol(uint8 volume) const;
|
||||||
void SetEffectsMasterVolume(uint8 volume) const;
|
void SetEffectsMasterVolume(uint8 volume) const;
|
||||||
|
void SetMP3BoostVolume(uint8 volume) const;
|
||||||
void SetEntityStatus(int32 id, uint8 status);
|
void SetEntityStatus(int32 id, uint8 status);
|
||||||
uint32 SetLoopingCollisionRequestedSfxFreqAndGetVol(const cAudioCollision &audioCollision);
|
uint32 SetLoopingCollisionRequestedSfxFreqAndGetVol(const cAudioCollision &audioCollision);
|
||||||
void SetMissionAudioLocation(uint8 slot, float x, float y, float z);
|
void SetMissionAudioLocation(uint8 slot, float x, float y, float z);
|
||||||
|
@ -416,6 +418,10 @@ public:
|
||||||
bool UsesSiren(int32 model) const;
|
bool UsesSiren(int32 model) const;
|
||||||
bool UsesSirenSwitching(int32 model) const;
|
bool UsesSirenSwitching(int32 model) const;
|
||||||
|
|
||||||
|
CVehicle *FindVehicleOfPlayer();
|
||||||
|
void SetPedTalkingStatus(CPed *ped, uint8 status);
|
||||||
|
void SetPlayersMood(uint8 mood, int32 time);
|
||||||
|
|
||||||
#ifdef GTA_PC
|
#ifdef GTA_PC
|
||||||
// only used in pc
|
// only used in pc
|
||||||
void AdjustSamplesVolume();
|
void AdjustSamplesVolume();
|
||||||
|
|
|
@ -64,6 +64,15 @@ cDMAudio::SetMonoMode(uint8 mono)
|
||||||
AudioManager.SetMonoMode(mono);
|
AudioManager.SetMonoMode(mono);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cDMAudio::SetMP3BoostVolume(uint8 volume)
|
||||||
|
{
|
||||||
|
uint8 vol = volume;
|
||||||
|
if (vol > MAX_VOLUME) vol = MAX_VOLUME;
|
||||||
|
|
||||||
|
AudioManager.SetMP3BoostVolume(vol);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cDMAudio::SetEffectsMasterVolume(uint8 volume)
|
cDMAudio::SetEffectsMasterVolume(uint8 volume)
|
||||||
{
|
{
|
||||||
|
@ -112,70 +121,9 @@ cDMAudio::Get3DProviderName(uint8 id)
|
||||||
return AudioManager.Get3DProviderName(id);
|
return AudioManager.Get3DProviderName(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(Miami): Content of this moved to cSampleManager or cAudioManager
|
|
||||||
int8 cDMAudio::AutoDetect3DProviders(void)
|
int8 cDMAudio::AutoDetect3DProviders(void)
|
||||||
{
|
{
|
||||||
if (!AudioManager.IsAudioInitialised())
|
return AudioManager.AutoDetect3DProviders();
|
||||||
return -1;
|
|
||||||
|
|
||||||
int eax = -1, eax2 = -1, eax3 = -1, ds3dh = -1, ds3ds = -1;
|
|
||||||
|
|
||||||
for ( int32 i = 0; i < GetNum3DProvidersAvailable(); i++ )
|
|
||||||
{
|
|
||||||
char *providername = Get3DProviderName(i);
|
|
||||||
strupr(providername);
|
|
||||||
|
|
||||||
#if defined(AUDIO_OAL)
|
|
||||||
if (!strcmp(providername, "OPENAL SOFT")) {
|
|
||||||
SetCurrent3DProvider(i);
|
|
||||||
if (GetCurrent3DProviderIndex() == i)
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if (!strcmp(providername, "CREATIVE LABS EAX 3 (TM)")) {
|
|
||||||
SetCurrent3DProvider(i);
|
|
||||||
if (GetCurrent3DProviderIndex() == i) {
|
|
||||||
eax3 = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!strcmp(providername, "CREATIVE LABS EAX 2 (TM)")) {
|
|
||||||
SetCurrent3DProvider(i);
|
|
||||||
if (GetCurrent3DProviderIndex() == i)
|
|
||||||
eax2 = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!strcmp(providername, "CREATIVE LABS EAX (TM)")) {
|
|
||||||
SetCurrent3DProvider(i);
|
|
||||||
if (GetCurrent3DProviderIndex() == i)
|
|
||||||
eax = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!strcmp(providername, "DIRECTSOUND3D HARDWARE SUPPORT")) {
|
|
||||||
SetCurrent3DProvider(i);
|
|
||||||
if (GetCurrent3DProviderIndex() == i)
|
|
||||||
ds3dh = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!strcmp(providername, "DIRECTSOUND3D SOFTWARE EMULATION")) {
|
|
||||||
SetCurrent3DProvider(i);
|
|
||||||
if (GetCurrent3DProviderIndex() == i)
|
|
||||||
ds3ds = i;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
if (eax3 != -1)
|
|
||||||
return eax3;
|
|
||||||
if (eax2 != -1)
|
|
||||||
return eax2;
|
|
||||||
if (eax != -1)
|
|
||||||
return eax;
|
|
||||||
if (ds3dh != -1)
|
|
||||||
return ds3dh;
|
|
||||||
if (ds3ds != -1)
|
|
||||||
return ds3ds;
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int8
|
int8
|
||||||
|
@ -392,3 +340,45 @@ cDMAudio::SetRadioChannel(int8 radio, int32 pos)
|
||||||
{
|
{
|
||||||
MusicManager.SetRadioChannelByScript(radio, pos);
|
MusicManager.SetRadioChannelByScript(radio, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cDMAudio::SetStartingTrackPositions(uint8 isStartGame)
|
||||||
|
{
|
||||||
|
MusicManager.SetStartingTrackPositions(isStartGame);
|
||||||
|
}
|
||||||
|
|
||||||
|
float *
|
||||||
|
cDMAudio::GetListenTimeArray()
|
||||||
|
{
|
||||||
|
return MusicManager.GetListenTimeArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32
|
||||||
|
cDMAudio::GetFavouriteRadioStation()
|
||||||
|
{
|
||||||
|
return MusicManager.GetFavouriteRadioStation();
|
||||||
|
}
|
||||||
|
|
||||||
|
int32
|
||||||
|
cDMAudio::GetRadioPosition(uint32 station)
|
||||||
|
{
|
||||||
|
return MusicManager.GetRadioPosition(station);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cDMAudio::SetPedTalkingStatus(CPed *ped, uint8 status)
|
||||||
|
{
|
||||||
|
return AudioManager.SetPedTalkingStatus(ped, status);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cDMAudio::SetPlayersMood(uint8 mood, int32 time)
|
||||||
|
{
|
||||||
|
return AudioManager.SetPlayersMood(mood, time);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cDMAudio::ShutUpPlayerTalking(uint8 state)
|
||||||
|
{
|
||||||
|
AudioManager.m_bIsPlayerShutUp = state;
|
||||||
|
}
|
|
@ -30,6 +30,7 @@ public:
|
||||||
void DestroyAllGameCreatedEntities(void);
|
void DestroyAllGameCreatedEntities(void);
|
||||||
|
|
||||||
void SetMonoMode(uint8 mono);
|
void SetMonoMode(uint8 mono);
|
||||||
|
void SetMP3BoostVolume(uint8 volume);
|
||||||
void SetEffectsMasterVolume(uint8 volume);
|
void SetEffectsMasterVolume(uint8 volume);
|
||||||
void SetMusicMasterVolume(uint8 volume);
|
void SetMusicMasterVolume(uint8 volume);
|
||||||
void SetEffectsFadeVol(uint8 volume);
|
void SetEffectsFadeVol(uint8 volume);
|
||||||
|
@ -90,5 +91,13 @@ public:
|
||||||
uint8 GetRadioInCar(void);
|
uint8 GetRadioInCar(void);
|
||||||
void SetRadioInCar(uint32 radio);
|
void SetRadioInCar(uint32 radio);
|
||||||
void SetRadioChannel(int8 radio, int32 pos);
|
void SetRadioChannel(int8 radio, int32 pos);
|
||||||
|
|
||||||
|
void SetStartingTrackPositions(uint8 isStartGame);
|
||||||
|
float *GetListenTimeArray();
|
||||||
|
uint32 GetFavouriteRadioStation();
|
||||||
|
int32 GetRadioPosition(uint32 station);
|
||||||
|
void SetPedTalkingStatus(class CPed *ped, uint8 status);
|
||||||
|
void SetPlayersMood(uint8 mood, int32 time);
|
||||||
|
void ShutUpPlayerTalking(uint8 state);
|
||||||
};
|
};
|
||||||
extern cDMAudio DMAudio;
|
extern cDMAudio DMAudio;
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -11,41 +11,53 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
class CVehicle;
|
class CVehicle;
|
||||||
|
class CPed;
|
||||||
|
|
||||||
class cMusicManager
|
class cMusicManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool m_bIsInitialised;
|
bool m_bIsInitialised;
|
||||||
bool m_bDisabled;
|
bool m_bDisabled;
|
||||||
uint8 m_nMusicMode;
|
bool field_2;
|
||||||
uint32 m_nCurrentStreamedSound;
|
uint8 m_nVolumeLatency;
|
||||||
uint32 m_nPreviousStreamedSound;
|
uint8 m_nCurrentVolume;
|
||||||
bool m_bFrontendTrackFinished;
|
uint8 m_nMaxVolume;
|
||||||
bool m_bPlayInFrontend;
|
|
||||||
bool m_bSetNextStation;
|
|
||||||
uint32 m_nAnnouncement;
|
uint32 m_nAnnouncement;
|
||||||
bool m_bPreviousPlayerInCar;
|
|
||||||
bool m_bPlayerInCar;
|
|
||||||
bool m_bAnnouncementInProgress;
|
bool m_bAnnouncementInProgress;
|
||||||
tStreamedSample m_aTracks[TOTAL_STREAMED_SOUNDS];
|
tStreamedSample m_aTracks[TOTAL_STREAMED_SOUNDS];
|
||||||
bool m_bResetTimers;
|
bool m_bResetTimers;
|
||||||
uint32 m_nResetTime;
|
uint32 m_nResetTime;
|
||||||
uint32 m_nLastTrackServiceTime;
|
|
||||||
uint32 m_nTimer;
|
|
||||||
bool m_bDoTrackService;
|
|
||||||
bool m_bIgnoreTimeDelay;
|
|
||||||
bool m_bDontServiceAmbienceTrack;
|
|
||||||
bool m_bRadioSetByScript;
|
bool m_bRadioSetByScript;
|
||||||
uint32 m_nRadioStation;
|
uint8 m_nRadioStation;
|
||||||
int32 m_nRadioPosition;
|
uint32 m_nRadioPosition;
|
||||||
uint32 m_nRadioInCar;
|
uint32 m_nRadioInCar;
|
||||||
|
uint32 m_nFrontendTrack;
|
||||||
|
uint32 m_nPlayingTrack;
|
||||||
|
uint8 m_nUpcomingMusicMode;
|
||||||
|
uint8 m_nMusicMode;
|
||||||
|
bool field_398E;
|
||||||
|
bool field_398F;
|
||||||
|
uint32 m_nStreamedTrack;
|
||||||
|
bool field_3994;
|
||||||
|
bool field_3995;
|
||||||
|
bool field_3996;
|
||||||
|
bool field_3997;
|
||||||
|
int8 field_3998;
|
||||||
|
bool field_3999;
|
||||||
|
bool field_399A;
|
||||||
|
uint8 m_nMusicModeToBeSet;
|
||||||
|
bool field_399C;
|
||||||
|
float aListenTimeArray[NUM_RADIOS];
|
||||||
|
float m_nLastTrackServiceTime;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
cMusicManager();
|
cMusicManager();
|
||||||
bool IsInitialised() { return m_bIsInitialised; }
|
bool IsInitialised() { return m_bIsInitialised; }
|
||||||
uint32 GetMusicMode() { return m_nMusicMode; }
|
uint8 GetMusicMode() { return m_nMusicMode; }
|
||||||
uint8 GetCurrentTrack() { return m_nCurrentStreamedSound; }
|
uint32 GetCurrentTrack() { return m_nPlayingTrack; }
|
||||||
|
|
||||||
|
void ResetMusicAfterReload();
|
||||||
|
void SetStartingTrackPositions(uint8 isNewGameTimer);
|
||||||
bool Initialise();
|
bool Initialise();
|
||||||
void Terminate();
|
void Terminate();
|
||||||
|
|
||||||
|
@ -60,21 +72,20 @@ public:
|
||||||
void PreloadCutSceneMusic(uint32);
|
void PreloadCutSceneMusic(uint32);
|
||||||
void PlayPreloadedCutSceneMusic(void);
|
void PlayPreloadedCutSceneMusic(void);
|
||||||
void StopCutSceneMusic(void);
|
void StopCutSceneMusic(void);
|
||||||
uint8 GetRadioInCar(void);
|
uint32 GetRadioInCar(void);
|
||||||
void SetRadioInCar(uint32);
|
void SetRadioInCar(uint32);
|
||||||
void SetRadioChannelByScript(uint8, int32);
|
void SetRadioChannelByScript(uint32, int32);
|
||||||
|
|
||||||
void ResetMusicAfterReload();
|
|
||||||
|
|
||||||
void ResetTimers(int32);
|
void ResetTimers(int32);
|
||||||
void Service();
|
void Service();
|
||||||
void ServiceFrontEndMode();
|
void ServiceFrontEndMode();
|
||||||
void ServiceGameMode();
|
void ServiceGameMode();
|
||||||
void ServiceAmbience();
|
void ServiceAmbience();
|
||||||
void ServiceTrack();
|
void ServiceTrack(CVehicle *veh, CPed *ped);
|
||||||
|
|
||||||
bool UsesPoliceRadio(CVehicle *veh);
|
bool UsesPoliceRadio(CVehicle *veh);
|
||||||
uint32 GetTrackStartPos(uint8);
|
bool UsesTaxiRadio(CVehicle *veh);
|
||||||
|
uint32 GetTrackStartPos(uint32 track);
|
||||||
|
|
||||||
void ComputeAmbienceVol(uint8 reset, uint8& outVolume);
|
void ComputeAmbienceVol(uint8 reset, uint8& outVolume);
|
||||||
bool ServiceAnnouncement();
|
bool ServiceAnnouncement();
|
||||||
|
@ -82,8 +93,21 @@ public:
|
||||||
uint32 GetCarTuning();
|
uint32 GetCarTuning();
|
||||||
uint32 GetNextCarTuning();
|
uint32 GetNextCarTuning();
|
||||||
bool ChangeRadioChannel();
|
bool ChangeRadioChannel();
|
||||||
|
void RecordRadioStats();
|
||||||
|
void SetUpCorrectAmbienceTrack();
|
||||||
|
float *GetListenTimeArray();
|
||||||
|
uint32 GetRadioPosition(uint32 station);
|
||||||
|
uint32 GetFavouriteRadioStation();
|
||||||
|
void SetMalibuClubTrackPos(uint8 pos);
|
||||||
|
void SetStripClubTrackPos(uint8 pos);
|
||||||
|
bool CheckForMusicInterruptions();
|
||||||
|
|
||||||
|
void Enable();
|
||||||
|
void Disable();
|
||||||
};
|
};
|
||||||
|
|
||||||
VALIDATE_SIZE(cMusicManager, 0x95C);
|
VALIDATE_SIZE(cMusicManager, 0x95C);
|
||||||
|
|
||||||
extern cMusicManager MusicManager;
|
extern cMusicManager MusicManager;
|
||||||
|
extern bool g_bAnnouncementReadPosAlready; // we have a symbol of this so it was declared in .h
|
||||||
|
float GetHeightScale();
|
|
@ -27,6 +27,15 @@ enum eMusicMode
|
||||||
MUSICMODE_DISABLED,
|
MUSICMODE_DISABLED,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ePlayerMood
|
||||||
|
{
|
||||||
|
PLAYER_MOOD_CALM = 0,
|
||||||
|
PLAYER_MOOD_PISSED_OFF,
|
||||||
|
PLAYER_MOOD_ANGRY,
|
||||||
|
PLAYER_MOOD_WISECRACKING,
|
||||||
|
MAX_PLAYER_MOODS,
|
||||||
|
};
|
||||||
|
|
||||||
enum eStreamedSounds
|
enum eStreamedSounds
|
||||||
{
|
{
|
||||||
STREAMED_SOUND_RADIO_WILD,
|
STREAMED_SOUND_RADIO_WILD,
|
||||||
|
@ -1254,7 +1263,7 @@ enum eStreamedSounds
|
||||||
STREAMED_SOUND_MISSION_BUST_27,
|
STREAMED_SOUND_MISSION_BUST_27,
|
||||||
STREAMED_SOUND_MISSION_BUST_28,
|
STREAMED_SOUND_MISSION_BUST_28,
|
||||||
TOTAL_STREAMED_SOUNDS,
|
TOTAL_STREAMED_SOUNDS,
|
||||||
NO_STREAMED_SOUND,
|
NO_TRACK,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum AudioEntityHandle {
|
enum AudioEntityHandle {
|
||||||
|
|
|
@ -117,15 +117,19 @@ class cSampleManager
|
||||||
{
|
{
|
||||||
uint8 m_nEffectsVolume;
|
uint8 m_nEffectsVolume;
|
||||||
uint8 m_nMusicVolume;
|
uint8 m_nMusicVolume;
|
||||||
|
uint8 m_nMP3BoostVolume;
|
||||||
uint8 m_nEffectsFadeVolume;
|
uint8 m_nEffectsFadeVolume;
|
||||||
uint8 m_nMusicFadeVolume;
|
uint8 m_nMusicFadeVolume;
|
||||||
uint8 m_nMonoMode;
|
uint8 m_nMonoMode;
|
||||||
char unk;
|
|
||||||
char m_szCDRomRootPath[80];
|
char m_szCDRomRootPath[80];
|
||||||
bool m_bInitialised;
|
bool m_bInitialised;
|
||||||
uint8 m_nNumberOfProviders;
|
uint8 m_nNumberOfProviders;
|
||||||
char *m_aAudioProviders[MAXPROVIDERS];
|
char *m_aAudioProviders[MAXPROVIDERS];
|
||||||
tSample m_aSamples[TOTAL_AUDIO_SAMPLES];
|
tSample m_aSamples[TOTAL_AUDIO_SAMPLES];
|
||||||
|
char m_MiscomPath[260];
|
||||||
|
char m_SfxPath[260];
|
||||||
|
char m_StreamedAudioPath[188];
|
||||||
|
void *m_aChannels[18];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -146,6 +150,8 @@ public:
|
||||||
int8 GetCurrent3DProviderIndex(void);
|
int8 GetCurrent3DProviderIndex(void);
|
||||||
int8 SetCurrent3DProvider(uint8 which);
|
int8 SetCurrent3DProvider(uint8 which);
|
||||||
|
|
||||||
|
int8 AutoDetect3DProviders();
|
||||||
|
|
||||||
bool IsMP3RadioChannelAvailable(void);
|
bool IsMP3RadioChannelAvailable(void);
|
||||||
|
|
||||||
void ReleaseDigitalHandle (void);
|
void ReleaseDigitalHandle (void);
|
||||||
|
@ -165,6 +171,7 @@ public:
|
||||||
|
|
||||||
void SetEffectsMasterVolume(uint8 nVolume);
|
void SetEffectsMasterVolume(uint8 nVolume);
|
||||||
void SetMusicMasterVolume (uint8 nVolume);
|
void SetMusicMasterVolume (uint8 nVolume);
|
||||||
|
void SetMP3BoostVolume (uint8 nVolume);
|
||||||
void SetEffectsFadeVolume (uint8 nVolume);
|
void SetEffectsFadeVolume (uint8 nVolume);
|
||||||
void SetMusicFadeVolume (uint8 nVolume);
|
void SetMusicFadeVolume (uint8 nVolume);
|
||||||
void SetMonoMode (uint8 nMode);
|
void SetMonoMode (uint8 nMode);
|
||||||
|
@ -213,6 +220,9 @@ public:
|
||||||
void Service(void);
|
void Service(void);
|
||||||
#endif
|
#endif
|
||||||
bool InitialiseSampleBanks(void);
|
bool InitialiseSampleBanks(void);
|
||||||
|
|
||||||
|
uint8 GetMusicVolume() const { return m_nMusicVolume; }
|
||||||
|
void SetStreamedFileLoopFlag(uint8 nLoopFlag, uint8 nStream);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern cSampleManager SampleManager;
|
extern cSampleManager SampleManager;
|
||||||
|
|
|
@ -61,6 +61,7 @@ char _mp3DirectoryPath[MAX_PATH];
|
||||||
HSTREAM mp3Stream [MAX_STREAMS];
|
HSTREAM mp3Stream [MAX_STREAMS];
|
||||||
int8 nStreamPan [MAX_STREAMS];
|
int8 nStreamPan [MAX_STREAMS];
|
||||||
int8 nStreamVolume[MAX_STREAMS];
|
int8 nStreamVolume[MAX_STREAMS];
|
||||||
|
uint8 nStreamLoopedFlag[MAX_STREAMS];
|
||||||
uint32 _CurMP3Index;
|
uint32 _CurMP3Index;
|
||||||
int32 _CurMP3Pos;
|
int32 _CurMP3Pos;
|
||||||
bool _bIsMp3Active;
|
bool _bIsMp3Active;
|
||||||
|
@ -407,6 +408,63 @@ cSampleManager::SetCurrent3DProvider(uint8 nProvider)
|
||||||
return curprovider;
|
return curprovider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int8
|
||||||
|
cSampleManager::AutoDetect3DProviders()
|
||||||
|
{
|
||||||
|
if (!AudioManager.IsAudioInitialised())
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
int eax = -1, eax2 = -1, eax3 = -1, ds3dh = -1, ds3ds = -1;
|
||||||
|
|
||||||
|
for (uint32 i = 0; i < GetNum3DProvidersAvailable(); i++)
|
||||||
|
{
|
||||||
|
char* providername = Get3DProviderName(i);
|
||||||
|
|
||||||
|
if (!strcasecmp(providername, "CREATIVE LABS EAX (TM)")) {
|
||||||
|
AudioManager.SetCurrent3DProvider(i);
|
||||||
|
if (GetCurrent3DProviderIndex() == i)
|
||||||
|
eax = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcasecmp(providername, "CREATIVE LABS EAX 2 (TM)")) {
|
||||||
|
AudioManager.SetCurrent3DProvider(i);
|
||||||
|
if (GetCurrent3DProviderIndex() == i)
|
||||||
|
eax2 = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcasecmp(providername, "CREATIVE LABS EAX 3 (TM)")) {
|
||||||
|
AudioManager.SetCurrent3DProvider(i);
|
||||||
|
if (GetCurrent3DProviderIndex() == i) {
|
||||||
|
eax3 = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcasecmp(providername, "DIRECTSOUND3D HARDWARE SUPPORT")) {
|
||||||
|
AudioManager.SetCurrent3DProvider(i);
|
||||||
|
if (GetCurrent3DProviderIndex() == i)
|
||||||
|
ds3dh = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcasecmp(providername, "DIRECTSOUND3D SOFTWARE EMULATION")) {
|
||||||
|
AudioManager.SetCurrent3DProvider(i);
|
||||||
|
if (GetCurrent3DProviderIndex() == i)
|
||||||
|
ds3ds = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (eax3 != -1)
|
||||||
|
return eax3;
|
||||||
|
if (eax2 != -1)
|
||||||
|
return eax2;
|
||||||
|
if (eax != -1)
|
||||||
|
return eax;
|
||||||
|
if (ds3dh != -1)
|
||||||
|
return ds3dh;
|
||||||
|
if (ds3ds != -1)
|
||||||
|
return ds3ds;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
_ResolveLink(char const *path, char *out)
|
_ResolveLink(char const *path, char *out)
|
||||||
{
|
{
|
||||||
|
@ -1455,6 +1513,12 @@ cSampleManager::SetMusicMasterVolume(uint8 nVolume)
|
||||||
m_nMusicVolume = nVolume;
|
m_nMusicVolume = nVolume;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cSampleManager::SetMP3BoostVolume(uint8 nVolume)
|
||||||
|
{
|
||||||
|
m_nMP3BoostVolume = nVolume;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cSampleManager::SetEffectsFadeVolume(uint8 nVolume)
|
cSampleManager::SetEffectsFadeVolume(uint8 nVolume)
|
||||||
{
|
{
|
||||||
|
@ -2132,7 +2196,8 @@ cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream)
|
||||||
AIL_open_stream(DIG, filename, 0);
|
AIL_open_stream(DIG, filename, 0);
|
||||||
if(mp3Stream[nStream]) {
|
if(mp3Stream[nStream]) {
|
||||||
AIL_set_stream_loop_count(
|
AIL_set_stream_loop_count(
|
||||||
mp3Stream[nStream], 1);
|
mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1);
|
||||||
|
nStreamLoopedFlag[nStream] = true;
|
||||||
AIL_set_stream_ms_position(
|
AIL_set_stream_ms_position(
|
||||||
mp3Stream[nStream], position);
|
mp3Stream[nStream], position);
|
||||||
AIL_pause_stream(mp3Stream[nStream],
|
AIL_pause_stream(mp3Stream[nStream],
|
||||||
|
@ -2387,4 +2452,12 @@ cSampleManager::InitialiseSampleBanks(void)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
cSampleManager::SetStreamedFileLoopFlag(uint8 nLoopFlag, uint8 nChannel)
|
||||||
|
{
|
||||||
|
if (m_bInitialised)
|
||||||
|
nStreamLoopedFlag[nChannel] = nLoopFlag;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -113,6 +113,11 @@ cSampleManager::SetMusicMasterVolume(uint8 nVolume)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cSampleManager::SetMusicMasterVolume(uint8 nVolume)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cSampleManager::SetEffectsFadeVolume(uint8 nVolume)
|
cSampleManager::SetEffectsFadeVolume(uint8 nVolume)
|
||||||
{
|
{
|
||||||
|
@ -365,4 +370,14 @@ cSampleManager::InitialiseSampleBanks(void)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cSampleManager::SetStreamedFileLoopFlag(uint8 nLoopFlag, uint8 nChannel)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int8 cSampleManager::AutoDetect3DProviders()
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -131,6 +131,7 @@ uint32 nNumMP3s;
|
||||||
CStream *aStream[MAX_STREAMS];
|
CStream *aStream[MAX_STREAMS];
|
||||||
uint8 nStreamPan [MAX_STREAMS];
|
uint8 nStreamPan [MAX_STREAMS];
|
||||||
uint8 nStreamVolume[MAX_STREAMS];
|
uint8 nStreamVolume[MAX_STREAMS];
|
||||||
|
uint8 nStreamLoopedFlag[MAX_STREAMS];
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
|
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
|
||||||
|
@ -468,6 +469,38 @@ int8 cSampleManager::SetCurrent3DProvider(uint8 nProvider)
|
||||||
return curprovider;
|
return curprovider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int8
|
||||||
|
cSampleManager::AutoDetect3DProviders()
|
||||||
|
{
|
||||||
|
if (!AudioManager.IsAudioInitialised())
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
int eax = -1, eax2 = -1, eax3 = -1, ds3dh = -1, ds3ds = -1;
|
||||||
|
|
||||||
|
for (uint32 i = 0; i < GetNum3DProvidersAvailable(); i++)
|
||||||
|
{
|
||||||
|
char* providername = Get3DProviderName(i);
|
||||||
|
|
||||||
|
if (!strcasecmp(providername, "OPENAL SOFT")) {
|
||||||
|
SetCurrent3DProvider(i);
|
||||||
|
if (GetCurrent3DProviderIndex() == i)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (eax3 != -1)
|
||||||
|
return eax3;
|
||||||
|
if (eax2 != -1)
|
||||||
|
return eax2;
|
||||||
|
if (eax != -1)
|
||||||
|
return eax;
|
||||||
|
if (ds3dh != -1)
|
||||||
|
return ds3dh;
|
||||||
|
if (ds3ds != -1)
|
||||||
|
return ds3ds;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
cSampleManager::IsMP3RadioChannelAvailable(void)
|
cSampleManager::IsMP3RadioChannelAvailable(void)
|
||||||
{
|
{
|
||||||
|
@ -729,6 +762,12 @@ cSampleManager::SetMusicMasterVolume(uint8 nVolume)
|
||||||
m_nMusicVolume = nVolume;
|
m_nMusicVolume = nVolume;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cSampleManager::SetMP3BoostVolume(uint8 nVolume)
|
||||||
|
{
|
||||||
|
m_nMP3BoostVolume = nVolume;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cSampleManager::SetEffectsFadeVolume(uint8 nVolume)
|
cSampleManager::SetEffectsFadeVolume(uint8 nVolume)
|
||||||
{
|
{
|
||||||
|
@ -1468,4 +1507,11 @@ cSampleManager::InitialiseSampleBanks(void)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cSampleManager::SetStreamedFileLoopFlag(uint8 nLoopFlag, uint8 nChannel)
|
||||||
|
{
|
||||||
|
if (m_bInitialised)
|
||||||
|
nStreamLoopedFlag[nChannel] = nLoopFlag;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -252,12 +252,15 @@ enum eScriptSounds : uint16 {
|
||||||
SCRIPT_SOUND_SAWMILL_LOOP_L,
|
SCRIPT_SOUND_SAWMILL_LOOP_L,
|
||||||
SCRIPT_SOUND_38,
|
SCRIPT_SOUND_38,
|
||||||
SCRIPT_SOUND_39,
|
SCRIPT_SOUND_39,
|
||||||
SCRIPT_SOUND_LAUNDERETTE_LOOP_S,
|
|
||||||
SCRIPT_SOUND_LAUNDERETTE_LOOP_L,
|
// MIAMI: only these are true so far
|
||||||
SCRIPT_SOUND_CHINATOWN_RESTAURANT_S,
|
SCRIPT_SOUND_MALIBU_1,
|
||||||
SCRIPT_SOUND_CHINATOWN_RESTAURANT_L,
|
SCRIPT_SOUND_MALIBU_2,
|
||||||
SCRIPT_SOUND_CIPRIANI_RESAURANT_S,
|
SCRIPT_SOUND_MALIBU_3,
|
||||||
SCRIPT_SOUND_CIPRIANI_RESAURANT_L,
|
SCRIPT_SOUND_STRIPCLUB_1,
|
||||||
|
SCRIPT_SOUND_STRIPCLUB_2,
|
||||||
|
SCRIPT_SOUND_STRIPCLUB_3,
|
||||||
|
|
||||||
SCRIPT_SOUND_46_S,
|
SCRIPT_SOUND_46_S,
|
||||||
SCRIPT_SOUND_47_L,
|
SCRIPT_SOUND_47_L,
|
||||||
SCRIPT_SOUND_MARCO_BISTRO_S,
|
SCRIPT_SOUND_MARCO_BISTRO_S,
|
||||||
|
|
|
@ -3773,7 +3773,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
|
||||||
CPed* pNearPed = ped->m_nearPeds[i];
|
CPed* pNearPed = ped->m_nearPeds[i];
|
||||||
if (pNearPed->m_leader == ped) {
|
if (pNearPed->m_leader == ped) {
|
||||||
pNearPed->Teleport(pos);
|
pNearPed->Teleport(pos);
|
||||||
pNearPed->PositionPedOutOfCollision(); // TODO(MIAMI): this is PositionAnyPedOutOfCollision!!!
|
pNearPed->PositionAnyPedOutOfCollision();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11936,7 +11936,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
|
||||||
return 0;
|
return 0;
|
||||||
case COMMAND_SHUT_CHAR_UP:
|
case COMMAND_SHUT_CHAR_UP:
|
||||||
CollectParameters(&m_nIp, 2);
|
CollectParameters(&m_nIp, 2);
|
||||||
debug("SHUT_CHAR_UP not implemented"); // TODO(MIAMI)
|
DMAudio.SetPedTalkingStatus(CPools::GetPedPool()->GetAt(ScriptParams[0]), ScriptParams[1] == 0);
|
||||||
return 0;
|
return 0;
|
||||||
case COMMAND_SET_ENABLE_RC_DETONATE:
|
case COMMAND_SET_ENABLE_RC_DETONATE:
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
|
@ -12563,13 +12563,13 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
|
||||||
case COMMAND_SHUT_PLAYER_UP:
|
case COMMAND_SHUT_PLAYER_UP:
|
||||||
{
|
{
|
||||||
CollectParameters(&m_nIp, 2);
|
CollectParameters(&m_nIp, 2);
|
||||||
debug("SHUT_PLAYER_UP is not implemented\n"); // TODO(MIAMI)
|
DMAudio.ShutUpPlayerTalking(!!ScriptParams[1]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_SET_PLAYER_MOOD:
|
case COMMAND_SET_PLAYER_MOOD:
|
||||||
{
|
{
|
||||||
CollectParameters(&m_nIp, 3);
|
CollectParameters(&m_nIp, 3);
|
||||||
debug("SET_PLAYER_MOOD is not implemented\n"); // TODO(MIAMI)
|
DMAudio.SetPlayersMood(ScriptParams[1], ScriptParams[2]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_REQUEST_COLLISION:
|
case COMMAND_REQUEST_COLLISION:
|
||||||
|
@ -13001,7 +13001,7 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
|
||||||
}
|
}
|
||||||
case COMMAND_DISABLE_CUTSCENE_SHADOWS:
|
case COMMAND_DISABLE_CUTSCENE_SHADOWS:
|
||||||
{
|
{
|
||||||
debug("DISABLE_CUTSCENE_SHADOWS not implemented, skipping\n"); // TODO(MIAMI)
|
CCutsceneMgr::DisableCutsceneShadows();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_HAS_GLASS_BEEN_SHATTERED_NEARBY:
|
case COMMAND_HAS_GLASS_BEEN_SHATTERED_NEARBY:
|
||||||
|
@ -13186,7 +13186,7 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
|
||||||
return 0;
|
return 0;
|
||||||
case COMMAND_REMOVE_EVERYTHING_FOR_HUGE_CUTSCENE:
|
case COMMAND_REMOVE_EVERYTHING_FOR_HUGE_CUTSCENE:
|
||||||
{
|
{
|
||||||
debug("REMOVE_EVERYTHING_FOR_HUGE_CUTSCENE not implemented, skipping\n");
|
CCutsceneMgr::RemoveEverythingFromTheWorldForTheBiggestFuckoffCutsceneEver();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_IS_PLAYER_TOUCHING_VEHICLE:
|
case COMMAND_IS_PLAYER_TOUCHING_VEHICLE:
|
||||||
|
|
|
@ -282,12 +282,12 @@ class CTheScripts
|
||||||
static uint8 UseTextCommands;
|
static uint8 UseTextCommands;
|
||||||
static uint16 CommandsExecuted;
|
static uint16 CommandsExecuted;
|
||||||
static uint16 ScriptsUpdated;
|
static uint16 ScriptsUpdated;
|
||||||
static uint8 RiotIntensity;
|
|
||||||
static uint32 LastMissionPassedTime;
|
static uint32 LastMissionPassedTime;
|
||||||
static uint16 NumberOfExclusiveMissionScripts;
|
static uint16 NumberOfExclusiveMissionScripts;
|
||||||
static bool bPlayerIsInTheStatium;
|
static bool bPlayerIsInTheStatium;
|
||||||
|
public:
|
||||||
|
static uint8 RiotIntensity;
|
||||||
static bool bPlayerHasMetDebbieHarry;
|
static bool bPlayerHasMetDebbieHarry;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void Init();
|
static void Init();
|
||||||
static void Process();
|
static void Process();
|
||||||
|
|
|
@ -24,6 +24,7 @@ enum eEventType
|
||||||
EVENT_CAR_SET_ON_FIRE,
|
EVENT_CAR_SET_ON_FIRE,
|
||||||
EVENT_ASSAULT_NASTYWEAPON,
|
EVENT_ASSAULT_NASTYWEAPON,
|
||||||
EVENT_ASSAULT_NASTYWEAPON_POLICE,
|
EVENT_ASSAULT_NASTYWEAPON_POLICE,
|
||||||
|
EVENT_UNK, // Not on SA it seems
|
||||||
EVENT_ICECREAM,
|
EVENT_ICECREAM,
|
||||||
EVENT_ATM,
|
EVENT_ATM,
|
||||||
EVENT_SHOPSTALL,
|
EVENT_SHOPSTALL,
|
||||||
|
|
|
@ -463,8 +463,7 @@ bool CGame::Initialise(const char* datFile)
|
||||||
#ifdef USE_TEXTURE_POOL
|
#ifdef USE_TEXTURE_POOL
|
||||||
_TexturePoolsUnknown(true);
|
_TexturePoolsUnknown(true);
|
||||||
#endif
|
#endif
|
||||||
// TODO(Miami)
|
DMAudio.SetStartingTrackPositions(true);
|
||||||
// DMAudio.SetStartingTrackPositions(1);
|
|
||||||
DMAudio.ChangeMusicMode(MUSICMODE_GAME);
|
DMAudio.ChangeMusicMode(MUSICMODE_GAME);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include "Text.h"
|
#include "Text.h"
|
||||||
#include "World.h"
|
#include "World.h"
|
||||||
#include "Pad.h"
|
#include "Pad.h"
|
||||||
|
#include "DMAudio.h"
|
||||||
|
|
||||||
#include <climits>
|
#include <climits>
|
||||||
|
|
||||||
|
@ -102,7 +103,7 @@ float CStats::LongestWheelieDist;
|
||||||
float CStats::LongestStoppieDist;
|
float CStats::LongestStoppieDist;
|
||||||
float CStats::Longest2WheelDist;
|
float CStats::Longest2WheelDist;
|
||||||
|
|
||||||
// --MIAMI: functions below are done except TODOs, but there are some to be moved from Frontend
|
// --MIAMI: functions below are done, but there are some to be moved from Frontend
|
||||||
|
|
||||||
void CStats::Init()
|
void CStats::Init()
|
||||||
{
|
{
|
||||||
|
@ -198,9 +199,7 @@ void CStats::Init()
|
||||||
NoMoreHurricanes = 0;
|
NoMoreHurricanes = 0;
|
||||||
ShowChaseStatOnScreen = 0;
|
ShowChaseStatOnScreen = 0;
|
||||||
abSonyCDs[0] = 0;
|
abSonyCDs[0] = 0;
|
||||||
// TODO(Miami): Change this with PopulateFavoriteRadioStationList(); !!
|
PopulateFavoriteRadioStationList();
|
||||||
for (int i = 0; i < NUM_RADIOS; i++)
|
|
||||||
FavoriteRadioStationList[i] = 0.0f;
|
|
||||||
|
|
||||||
NumPropertyOwned = 0;
|
NumPropertyOwned = 0;
|
||||||
for (int i = 0; i < TOTAL_PROPERTIES; i++)
|
for (int i = 0; i < TOTAL_PROPERTIES; i++)
|
||||||
|
@ -471,6 +470,11 @@ void CStats::AddPropertyAsOwned(int32 id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float CStats::GetFavoriteRadioStationList(int32 station)
|
||||||
|
{
|
||||||
|
return FavoriteRadioStationList[station];
|
||||||
|
}
|
||||||
|
|
||||||
void CStats::SaveStats(uint8 *buf, uint32 *size)
|
void CStats::SaveStats(uint8 *buf, uint32 *size)
|
||||||
{
|
{
|
||||||
CheckPointReachedSuccessfully();
|
CheckPointReachedSuccessfully();
|
||||||
|
@ -652,7 +656,7 @@ void CStats::SaveStats(uint8 *buf, uint32 *size)
|
||||||
CopyToBuf(buf, TotalLegitimateKills);
|
CopyToBuf(buf, TotalLegitimateKills);
|
||||||
CopyToBuf(buf, LastMissionPassedName);
|
CopyToBuf(buf, LastMissionPassedName);
|
||||||
CopyToBuf(buf, CheatedCount);
|
CopyToBuf(buf, CheatedCount);
|
||||||
// TODO(Miami): Set favourite radio stations!!
|
PopulateFavoriteRadioStationList();
|
||||||
CopyToBuf(buf, FavoriteRadioStationList);
|
CopyToBuf(buf, FavoriteRadioStationList);
|
||||||
|
|
||||||
assert(buf - buf_start == *size);
|
assert(buf - buf_start == *size);
|
||||||
|
@ -757,3 +761,11 @@ void CStats::LoadStats(uint8 *buf, uint32 size)
|
||||||
assert(buf - buf_start == size);
|
assert(buf - buf_start == size);
|
||||||
#undef CopyFromBuf
|
#undef CopyFromBuf
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CStats::PopulateFavoriteRadioStationList()
|
||||||
|
{
|
||||||
|
float* pListenTimeArray = DMAudio.GetListenTimeArray();
|
||||||
|
for (int i = 0; i < NUM_RADIOS; i++)
|
||||||
|
FavoriteRadioStationList[i] = pListenTimeArray[i];
|
||||||
|
}
|
|
@ -145,4 +145,6 @@ public:
|
||||||
|
|
||||||
static void LongestTimeInBloodRing(int32);
|
static void LongestTimeInBloodRing(int32);
|
||||||
static void AddPropertyAsOwned(int32);
|
static void AddPropertyAsOwned(int32);
|
||||||
|
static void PopulateFavoriteRadioStationList();
|
||||||
|
static float GetFavoriteRadioStationList(int32);
|
||||||
};
|
};
|
||||||
|
|
826
src/peds/Ped.cpp
826
src/peds/Ped.cpp
File diff suppressed because it is too large
Load diff
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
#define FEET_OFFSET 1.04f
|
#define FEET_OFFSET 1.04f
|
||||||
#define CHECK_NEARBY_THINGS_MAX_DIST 15.0f
|
#define CHECK_NEARBY_THINGS_MAX_DIST 15.0f
|
||||||
|
#define ENTER_CAR_MAX_DIST 30.0f
|
||||||
|
|
||||||
class CAccident;
|
class CAccident;
|
||||||
class CObject;
|
class CObject;
|
||||||
|
@ -459,8 +460,8 @@ public:
|
||||||
uint32 bHasAlreadyUsedAttractor : 1;
|
uint32 bHasAlreadyUsedAttractor : 1;
|
||||||
uint32 b155_2 : 1;
|
uint32 b155_2 : 1;
|
||||||
uint32 bCarPassenger : 1;
|
uint32 bCarPassenger : 1;
|
||||||
uint32 b155_8 : 1;
|
uint32 bFleeWhenStanding : 1;
|
||||||
uint32 b155_10 : 1;
|
uint32 bGotUpOfMyOwnAccord : 1;
|
||||||
uint32 bMiamiViceCop : 1;
|
uint32 bMiamiViceCop : 1;
|
||||||
uint32 bMoneyHasBeenGivenByScript : 1; //
|
uint32 bMoneyHasBeenGivenByScript : 1; //
|
||||||
uint32 bHasBeenPhotographed : 1; //
|
uint32 bHasBeenPhotographed : 1; //
|
||||||
|
@ -477,10 +478,10 @@ public:
|
||||||
uint32 bDontFight : 1;
|
uint32 bDontFight : 1;
|
||||||
uint32 bDoomAim : 1;
|
uint32 bDoomAim : 1;
|
||||||
uint32 bCanBeShotInVehicle : 1;
|
uint32 bCanBeShotInVehicle : 1;
|
||||||
uint32 b157_8 : 1;
|
uint32 bCanGiveUpSunbathing : 1;
|
||||||
uint32 bMakeFleeScream : 1;
|
uint32 bMakeFleeScream : 1;
|
||||||
uint32 bPushedAlongByCar : 1;
|
uint32 bPushedAlongByCar : 1;
|
||||||
uint32 b157_40 : 1;
|
uint32 bRemoveMeWhenIGotIntoCar : 1;
|
||||||
uint32 bIgnoreThreatsBehindObjects : 1;
|
uint32 bIgnoreThreatsBehindObjects : 1;
|
||||||
|
|
||||||
uint32 bNeverEverTargetThisPed : 1;
|
uint32 bNeverEverTargetThisPed : 1;
|
||||||
|
@ -489,7 +490,7 @@ public:
|
||||||
uint32 b158_8 : 1;
|
uint32 b158_8 : 1;
|
||||||
uint32 bCollectBusFare : 1;
|
uint32 bCollectBusFare : 1;
|
||||||
uint32 bBoughtIceCream : 1;
|
uint32 bBoughtIceCream : 1;
|
||||||
uint32 b158_40 : 1;
|
uint32 bDonePositionOutOfCollision : 1;
|
||||||
uint32 b158_80 : 1;
|
uint32 b158_80 : 1;
|
||||||
|
|
||||||
// our own flags
|
// our own flags
|
||||||
|
@ -582,7 +583,7 @@ public:
|
||||||
float m_fleeFromPosY;
|
float m_fleeFromPosY;
|
||||||
CEntity *m_fleeFrom;
|
CEntity *m_fleeFrom;
|
||||||
uint32 m_fleeTimer;
|
uint32 m_fleeTimer;
|
||||||
CEntity* pThreatEx; // TODO(Miami): What is this?
|
CEntity* m_threatEx; // TODO(Miami): What is this?
|
||||||
CEntity* m_collidingEntityWhileFleeing;
|
CEntity* m_collidingEntityWhileFleeing;
|
||||||
uint32 m_collidingThingTimer;
|
uint32 m_collidingThingTimer;
|
||||||
CEntity *m_pCollidingEntity;
|
CEntity *m_pCollidingEntity;
|
||||||
|
@ -833,6 +834,7 @@ public:
|
||||||
void ReactToPointGun(CEntity*);
|
void ReactToPointGun(CEntity*);
|
||||||
void SeekCar(void);
|
void SeekCar(void);
|
||||||
bool PositionPedOutOfCollision(void);
|
bool PositionPedOutOfCollision(void);
|
||||||
|
bool PositionAnyPedOutOfCollision(void);
|
||||||
bool RunToReportCrime(eCrimeType);
|
bool RunToReportCrime(eCrimeType);
|
||||||
bool PlacePedOnDryLand(void);
|
bool PlacePedOnDryLand(void);
|
||||||
bool PossiblyFindBetterPosToSeekCar(CVector*, CVehicle*);
|
bool PossiblyFindBetterPosToSeekCar(CVector*, CVehicle*);
|
||||||
|
@ -907,6 +909,9 @@ public:
|
||||||
static void RestoreHeadingRateCB(CAnimBlendAssociation *assoc, void *arg);
|
static void RestoreHeadingRateCB(CAnimBlendAssociation *assoc, void *arg);
|
||||||
static void PedSetQuickDraggedOutCarPositionCB(CAnimBlendAssociation *assoc, void *arg);
|
static void PedSetQuickDraggedOutCarPositionCB(CAnimBlendAssociation *assoc, void *arg);
|
||||||
static void PedSetDraggedOutCarPositionCB(CAnimBlendAssociation *assoc, void *arg);
|
static void PedSetDraggedOutCarPositionCB(CAnimBlendAssociation *assoc, void *arg);
|
||||||
|
static void DeleteSunbatheIdleAnimCB(CAnimBlendAssociation *assoc, void *arg);
|
||||||
|
static void PedSetPreviousStateCB(CAnimBlendAssociation *assoc, void *arg);
|
||||||
|
static void PedAnimShuffleCB(CAnimBlendAssociation *assoc, void *arg);
|
||||||
|
|
||||||
bool IsPlayer(void);
|
bool IsPlayer(void);
|
||||||
bool IsFemale(void) { return m_nPedType == PEDTYPE_CIVFEMALE || m_nPedType == PEDTYPE_PROSTITUTE; }
|
bool IsFemale(void) { return m_nPedType == PEDTYPE_CIVFEMALE || m_nPedType == PEDTYPE_PROSTITUTE; }
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
#include "Fluff.h"
|
#include "Fluff.h"
|
||||||
|
|
||||||
#define BLOCK_COUNT 20
|
#define BLOCK_COUNT 20
|
||||||
#define SIZE_OF_SIMPLEVARS 0xD4
|
#define SIZE_OF_SIMPLEVARS 0xFC
|
||||||
|
|
||||||
const uint32 SIZE_OF_ONE_GAME_IN_BYTES = 201729;
|
const uint32 SIZE_OF_ONE_GAME_IN_BYTES = 201729;
|
||||||
|
|
||||||
|
@ -67,6 +67,28 @@ bool StillToFadeOut;
|
||||||
uint32 TimeStartedCountingForFade;
|
uint32 TimeStartedCountingForFade;
|
||||||
uint32 TimeToStayFadedBeforeFadeOut = 1750;
|
uint32 TimeToStayFadedBeforeFadeOut = 1750;
|
||||||
|
|
||||||
|
uint32 RadioStationPosition[NUM_RADIOS];
|
||||||
|
|
||||||
|
void
|
||||||
|
InitRadioStationPositionList()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < NUM_RADIOS; i++)
|
||||||
|
RadioStationPosition[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32
|
||||||
|
GetSavedRadioStationPosition(int32 station)
|
||||||
|
{
|
||||||
|
return RadioStationPosition[station];
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
PopulateRadioStationPositionList()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < NUM_RADIOS; i++)
|
||||||
|
RadioStationPosition[i] = DMAudio.GetRadioPosition(i);
|
||||||
|
}
|
||||||
|
|
||||||
#define ReadDataFromBufferPointer(buf, to) memcpy(&to, buf, sizeof(to)); buf += align4bytes(sizeof(to));
|
#define ReadDataFromBufferPointer(buf, to) memcpy(&to, buf, sizeof(to)); buf += align4bytes(sizeof(to));
|
||||||
#define WriteDataToBufferPointer(buf, from) memcpy(buf, &from, sizeof(from)); buf += align4bytes(sizeof(from));
|
#define WriteDataToBufferPointer(buf, from) memcpy(buf, &from, sizeof(from)); buf += align4bytes(sizeof(from));
|
||||||
|
|
||||||
|
@ -197,6 +219,8 @@ GenericSave(int file)
|
||||||
WriteDataToBufferPointer(buf, CTimeCycle::m_ExtraColour);
|
WriteDataToBufferPointer(buf, CTimeCycle::m_ExtraColour);
|
||||||
WriteDataToBufferPointer(buf, CTimeCycle::m_bExtraColourOn);
|
WriteDataToBufferPointer(buf, CTimeCycle::m_bExtraColourOn);
|
||||||
WriteDataToBufferPointer(buf, CTimeCycle::m_ExtraColourInter);
|
WriteDataToBufferPointer(buf, CTimeCycle::m_ExtraColourInter);
|
||||||
|
PopulateRadioStationPositionList();
|
||||||
|
WriteDataToBufferPointer(buf, RadioStationPosition);
|
||||||
assert(buf - work_buff == SIZE_OF_SIMPLEVARS);
|
assert(buf - work_buff == SIZE_OF_SIMPLEVARS);
|
||||||
|
|
||||||
// Save scripts, block is nested within the same block as simple vars for some reason
|
// Save scripts, block is nested within the same block as simple vars for some reason
|
||||||
|
@ -334,6 +358,7 @@ GenericLoad()
|
||||||
ReadDataFromBufferPointer(buf, CTimeCycle::m_ExtraColour);
|
ReadDataFromBufferPointer(buf, CTimeCycle::m_ExtraColour);
|
||||||
ReadDataFromBufferPointer(buf, CTimeCycle::m_bExtraColourOn);
|
ReadDataFromBufferPointer(buf, CTimeCycle::m_bExtraColourOn);
|
||||||
ReadDataFromBufferPointer(buf, CTimeCycle::m_ExtraColourInter);
|
ReadDataFromBufferPointer(buf, CTimeCycle::m_ExtraColourInter);
|
||||||
|
ReadDataFromBufferPointer(buf, RadioStationPosition);
|
||||||
assert(buf - work_buff == SIZE_OF_SIMPLEVARS);
|
assert(buf - work_buff == SIZE_OF_SIMPLEVARS);
|
||||||
#ifdef MISSION_REPLAY
|
#ifdef MISSION_REPLAY
|
||||||
WaitForSave = 0;
|
WaitForSave = 0;
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
|
|
||||||
#define SLOT_COUNT (8)
|
#define SLOT_COUNT (8)
|
||||||
|
|
||||||
|
void InitRadioStationPositionList();
|
||||||
|
uint32 GetSavedRadioStationPosition(int32 station);
|
||||||
|
void PopulateRadioStationPositionList();
|
||||||
bool GenericSave(int file);
|
bool GenericSave(int file);
|
||||||
bool GenericLoad();
|
bool GenericLoad();
|
||||||
bool ReadInSizeofSaveFileBuffer(int32 &file, uint32 &size);
|
bool ReadInSizeofSaveFileBuffer(int32 &file, uint32 &size);
|
||||||
|
|
Loading…
Reference in a new issue