summaryrefslogtreecommitdiffstats
path: root/src/audio/MusicManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/MusicManager.cpp')
-rw-r--r--src/audio/MusicManager.cpp132
1 files changed, 131 insertions, 1 deletions
diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp
index 0e6870de..d3f14b0a 100644
--- a/src/audio/MusicManager.cpp
+++ b/src/audio/MusicManager.cpp
@@ -1,7 +1,137 @@
#include "common.h"
#include "patcher.h"
#include "MusicManager.h"
+#include "Font.h"
+#include "Hud.h"
+#include "Text.h"
+#include "Timer.h"
+#include "Camera.h"
+#include "World.h"
+#include "ModelIndices.h"
+#include "SampleManager.h"
cMusicManager &MusicManager = *(cMusicManager*)0x8F3964;
+int &gNumRetunePresses = *(int*)0x650B80;
+int &gRetuneCounter = *(int*)0x650B84;
-WRAPPER void cMusicManager::DisplayRadioStationName(void) { EAXJMP(0x57E6D0); }
+//WRAPPER void cMusicManager::DisplayRadioStationName(void) { EAXJMP(0x57E6D0); }
+
+bool cMusicManager::PlayerInCar() {
+ if (!FindPlayerVehicle())
+ return false;
+ else {
+ int32 State = CWorld::Players[CWorld::PlayerInFocus].m_pPed->m_nPedState;
+
+ if (State == PED_DRAG_FROM_CAR || State == PED_EXIT_CAR || State == PED_ARRESTED)
+ return false;
+
+ int16 Model = FindPlayerVehicle()->m_modelIndex;
+ switch (FindPlayerVehicle()->m_modelIndex) {
+ case MI_FIRETRUCK:
+ case MI_AMBULAN:
+ case MI_MRWHOOP:
+ case MI_PREDATOR:
+ case MI_TRAIN:
+ case MI_SPEEDER:
+ case MI_REEFER:
+ case MI_GHOST:
+ return false;
+ default:
+ return true;
+ }
+ }
+}
+
+void cMusicManager::DisplayRadioStationName() {
+ wchar* RadioName = nullptr;
+ uint32 RadioStation = gNumRetunePresses + MusicManager.m_nCurrentStreamedSound;
+
+ switch (RadioStation) {
+ case HEAD_RADIO:
+ RadioName = TheText.Get("FEA_FM0");
+ break;
+ case DOUBLE_CLEF:
+ RadioName = TheText.Get("FEA_FM1");
+ break;
+ case JAH_RADIO:
+ RadioName = TheText.Get("FEA_FM2");
+ break;
+ case RISE_FM:
+ RadioName = TheText.Get("FEA_FM3");
+ break;
+ case LIPS_106:
+ RadioName = TheText.Get("FEA_FM4");
+ break;
+ case GAME_FM:
+ RadioName = TheText.Get("FEA_FM5");
+ break;
+ case MSX_FM:
+ RadioName = TheText.Get("FEA_FM6");
+ break;
+ case FLASHBACK:
+ RadioName = TheText.Get("FEA_FM7");
+ break;
+ case CHATTERBOX:
+ RadioName = TheText.Get("FEA_FM8");
+ break;
+ case USERTRACK:
+ RadioName = TheText.Get("FEA_FM9");
+ break;
+ default:
+ RadioName = nullptr;
+ break;
+ }
+
+ CFont::SetJustifyOff();
+ CFont::SetBackgroundOff();
+ CFont::SetScale(SCREEN_STRETCH_X(0.8f), SCREEN_STRETCH_Y(1.35f));
+ CFont::SetPropOn();
+ CFont::SetFontStyle(FONT_HEADING);
+ CFont::SetCentreOn();
+ CFont::SetCentreSize(SCREEN_STRETCH_X(640.0f));;
+
+ static int32 nTime = 0;
+ if (!CTimer::GetIsPaused() && !TheCamera.m_WideScreenOn && MusicManager.PlayerInCar()) {
+ if (gNumRetunePresses || (MusicManager.m_bPlayerInCar && !MusicManager.m_bPreviousPlayerInCar))
+ nTime = CTimer::GetTimeInMilliseconds() + 2000;
+
+ if (CTimer::GetTimeInMilliseconds() < nTime) {
+ if (RadioStation) {
+ if (MusicManager.m_nCurrentStreamedSound == STREAMED_SOUND_WATER_AMBIENT ||
+ MusicManager.m_nCurrentStreamedSound == STREAMED_SOUND_RADIO_POLICE ||
+ MusicManager.m_nCurrentStreamedSound == STREAMED_SOUND_WATER_AMBIENT ||
+ MusicManager.m_nCurrentStreamedSound == STREAMED_SOUND_CITY_AMBIENT)
+ RadioStation = RADIO_OFF;
+ else {
+ if (RadioStation > HEAD_RADIO) {
+ if (cSampleManager.IsMP3RadioChannelAvailable()) {
+ if (RadioStation > USERTRACK)
+ RadioStation = RADIO_OFF;
+ }
+ else {
+ if (RadioStation > CHATTERBOX)
+ RadioStation = RADIO_OFF;
+ }
+ }
+ else {
+ RadioStation = RADIO_OFF;
+ }
+ }
+ }
+
+ if (RadioName) {
+ CFont::SetColor(CRGBA(0, 0, 0, 255));
+
+ CFont::PrintString(SCREEN_WIDTH / 2, SCREEN_STRETCH_Y(23.0f), RadioName);
+
+ if (gNumRetunePresses)
+ CFont::SetColor(CRGBA(102, 133, 143, 255));
+ else
+ CFont::SetColor(CRGBA(147, 196, 211, 255));
+
+ CFont::PrintString(SCREEN_WIDTH / 2, SCREEN_STRETCH_Y(22.0f), RadioName);
+ CFont::DrawFonts();
+ }
+ }
+ }
+} \ No newline at end of file