summaryrefslogtreecommitdiff
path: root/src/audio/MusicManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/MusicManager.h')
-rw-r--r--src/audio/MusicManager.h113
1 files changed, 113 insertions, 0 deletions
diff --git a/src/audio/MusicManager.h b/src/audio/MusicManager.h
new file mode 100644
index 0000000..27456d7
--- /dev/null
+++ b/src/audio/MusicManager.h
@@ -0,0 +1,113 @@
+#pragma once
+
+#include "audio_enums.h"
+
+class tStreamedSample
+{
+public:
+ uint32 m_nLength;
+ uint32 m_nPosition;
+ uint32 m_nLastPosCheckTimer;
+};
+
+class CVehicle;
+class CPed;
+
+class cMusicManager
+{
+public:
+ bool m_bIsInitialised;
+ bool m_bDisabled;
+ bool m_bSetNextStation;
+ uint8 m_nVolumeLatency;
+ uint8 m_nCurrentVolume;
+ uint8 m_nMaxVolume;
+ uint32 m_nAnnouncement;
+ bool m_bAnnouncementInProgress;
+ tStreamedSample m_aTracks[TOTAL_STREAMED_SOUNDS];
+ bool m_bResetTimers;
+ uint32 m_nResetTime;
+ bool m_bRadioSetByScript;
+ uint8 m_nRadioStationScript;
+ int32 m_nRadioPosition;
+ uint32 m_nRadioInCar;
+ uint32 m_nFrontendTrack;
+ uint32 m_nPlayingTrack;
+ uint8 m_nUpcomingMusicMode;
+ uint8 m_nMusicMode;
+ bool m_FrontendLoopFlag;
+ bool m_bTrackChangeStarted;
+ uint32 m_nNextTrack;
+ bool m_nNextLoopFlag;
+ bool m_bVerifyNextTrackStartedToPlay;
+ bool m_bGameplayAllowsRadio;
+ bool m_bRadioStreamReady;
+ int8 nFramesSinceCutsceneEnded;
+ bool m_bUserResumedGame;
+ bool m_bMusicModeChangeStarted;
+ uint8 m_nMusicModeToBeSet;
+ bool m_bEarlyFrontendTrack;
+ float aListenTimeArray[NUM_RADIOS];
+ float m_nLastTrackServiceTime;
+
+public:
+ cMusicManager();
+ bool IsInitialised() { return m_bIsInitialised; }
+ uint8 GetMusicMode() { return m_nMusicMode; }
+ uint32 GetCurrentTrack() { return m_nPlayingTrack; }
+
+ void ResetMusicAfterReload();
+ void SetStartingTrackPositions(uint8 isNewGameTimer);
+ bool Initialise();
+ void Terminate();
+
+ void ChangeMusicMode(uint8 mode);
+ void StopFrontEndTrack();
+
+ bool PlayerInCar();
+ void DisplayRadioStationName();
+
+ void PlayAnnouncement(uint32);
+ void PlayFrontEndTrack(uint32, uint8);
+ void PreloadCutSceneMusic(uint32);
+ void PlayPreloadedCutSceneMusic(void);
+ void StopCutSceneMusic(void);
+ uint32 GetRadioInCar(void);
+ void SetRadioInCar(uint32);
+ void SetRadioChannelByScript(uint32, int32);
+
+ void ResetTimers(int32);
+ void Service();
+ void ServiceFrontEndMode();
+ void ServiceGameMode();
+ void ServiceAmbience();
+ void ServiceTrack(CVehicle *veh, CPed *ped);
+
+ bool UsesPoliceRadio(CVehicle *veh);
+ bool UsesTaxiRadio(CVehicle *veh);
+ uint32 GetTrackStartPos(uint32 track);
+
+ void ComputeAmbienceVol(uint8 reset, uint8& outVolume);
+ bool ServiceAnnouncement();
+
+ uint32 GetCarTuning();
+ uint32 GetNextCarTuning();
+ 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);
+
+extern cMusicManager MusicManager;
+extern bool g_bAnnouncementReadPosAlready; // we have a symbol of this so it was declared in .h
+float GetHeightScale();