diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 42b3482bf..8e4ce19f4 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -8236,6 +8236,11 @@ void P_ResetLevelMusic(void) mapmusrng = idx; } +boolean P_UseContinuousLevelMusic(void) +{ + return (gametyperules & GTR_NOPOSITION) || modeattacking != ATTACKING_NONE; +} + void P_LoadLevelMusic(void) { mapheader_t* mapheader = mapheaderinfo[gamemap-1]; @@ -8246,7 +8251,7 @@ void P_LoadLevelMusic(void) music = mapheader->musname[mapmusrng]; } - if (gametyperules & GTR_NOPOSITION || modeattacking != ATTACKING_NONE) + if (P_UseContinuousLevelMusic()) { if (!stricmp(Music_Song("level_nosync"), music)) { diff --git a/src/p_setup.h b/src/p_setup.h index e07b9c179..3f09939e5 100644 --- a/src/p_setup.h +++ b/src/p_setup.h @@ -106,6 +106,7 @@ extern mapthing_t *mapthings; void P_SetupLevelSky(const char *skytexname, boolean global); void P_RespawnThings(void); void P_ResetLevelMusic(void); +boolean P_UseContinuousLevelMusic(void); void P_LoadLevelMusic(void); boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate); void P_PostLoadLevel(void); diff --git a/src/p_tick.c b/src/p_tick.c index bc78f291a..c797e70df 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -824,6 +824,15 @@ static void P_TickMusicFade(void) g_musicfade.ticked = true; } +static void P_StartLevelMusic(void) +{ + if (!Music_Playing("level_nosync")) + { + // Do not stop level_nosync + Music_Play(P_UseContinuousLevelMusic() ? "level_nosync" : "level"); + } +} + // // P_Ticker // @@ -1024,7 +1033,7 @@ void P_Ticker(boolean run) // Bosses have a punchy start, so no position. if (leveltime == 1) { - Music_Play("level"); + P_StartLevelMusic(); } } else if (leveltime < starttime + TICRATE) @@ -1032,11 +1041,7 @@ void P_Ticker(boolean run) if (leveltime == (starttime + (TICRATE/2))) { // Plays the music after the starting countdown. - if (!Music_Playing("level_nosync")) - { - // Do not stop level_nosync - Music_Play((gametyperules & GTR_NOPOSITION) ? "level_nosync" : "level"); - } + P_StartLevelMusic(); } else if (starttime != introtime) { @@ -1065,9 +1070,9 @@ void P_Ticker(boolean run) if (modeattacking != ATTACKING_NONE) { - if (leveltime == 4 && !Music_Playing("level_nosync")) + if (leveltime == 4) { - Music_Play("level_nosync"); + P_StartLevelMusic(); } }