mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-15 09:11:48 +00:00
* Allow S_ChangeMusic to queue the same track for fading
* StopDigSong upon running queue so that GME works for queueing
This commit is contained in:
parent
fb0d1b45ac
commit
e51f9ecf90
2 changed files with 37 additions and 37 deletions
|
@ -1400,50 +1400,46 @@ void S_ChangeMusicWithFade(const char *mmusic, UINT16 mflags, boolean looping, U
|
|||
return;
|
||||
}
|
||||
|
||||
if (strncmp(music_name, newmusic, 6))
|
||||
if (S_MusicExists(newmusic, false, true) && !nodigimusic && !digital_disabled) // digmusic?
|
||||
{
|
||||
if (S_MusicExists(newmusic, false, true) && !nodigimusic && !digital_disabled) // digmusic?
|
||||
if (prefadems) //have to queue post-fade // allow even if the music is the same
|
||||
{
|
||||
if (prefadems) //have to queue post-fade
|
||||
{
|
||||
I_FadeOutStopMusic(prefadems);
|
||||
I_QueueDigSongPostFade(newmusic, mflags & MUSIC_TRACKMASK, looping, position, fadeinms);
|
||||
I_FadeOutStopMusic(prefadems);
|
||||
I_QueueDigSongPostFade(newmusic, mflags & MUSIC_TRACKMASK, looping, position, fadeinms);
|
||||
|
||||
// HACK: set the vars now and hope everything works out
|
||||
strncpy(music_name, newmusic, 7);
|
||||
music_name[6] = 0;
|
||||
music_lumpnum = LUMPERROR;
|
||||
music_data = NULL;
|
||||
music_handle = 0;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
S_StopMusic();
|
||||
if (!S_DigMusic(newmusic, looping))
|
||||
{
|
||||
CONS_Alert(CONS_ERROR, M_GetText("Music lump %.6s not found!\n"), newmusic);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// HACK: set the vars now and hope everything works out
|
||||
strncpy(music_name, newmusic, 7);
|
||||
music_name[6] = 0;
|
||||
music_lumpnum = LUMPERROR;
|
||||
music_data = NULL;
|
||||
music_handle = 0;
|
||||
return;
|
||||
}
|
||||
else if (S_MusicExists(newmusic, true, false) && !nomidimusic && !music_disabled) // midimusic?
|
||||
else if (strncmp(music_name, newmusic, 6))
|
||||
{
|
||||
// HACK: We don't support fade for MIDI right now, so
|
||||
// just fall to old behavior verbatim. This technically should be implemented in
|
||||
// the interfaces, even as a stub.
|
||||
|
||||
S_StopMusic();
|
||||
|
||||
if (!S_MIDIMusic(newmusic, looping))
|
||||
if (!S_DigMusic(newmusic, looping))
|
||||
{
|
||||
CONS_Alert(CONS_ERROR, M_GetText("Music lump %.6s not found!\n"), newmusic);
|
||||
return;
|
||||
}
|
||||
I_SetSongTrack(mflags & MUSIC_TRACKMASK);
|
||||
}
|
||||
}
|
||||
else if (strncmp(music_name, newmusic, 6) && S_MusicExists(newmusic, true, false) && !nomidimusic && !music_disabled) // midimusic?
|
||||
{
|
||||
// HACK: We don't support fade for MIDI right now, so
|
||||
// just fall to old behavior verbatim. This technically should be implemented in
|
||||
// the interfaces, even as a stub.
|
||||
|
||||
I_SetSongTrack(mflags & MUSIC_TRACKMASK);
|
||||
S_StopMusic();
|
||||
|
||||
if (!S_MIDIMusic(newmusic, looping))
|
||||
{
|
||||
CONS_Alert(CONS_ERROR, M_GetText("Music lump %.6s not found!\n"), newmusic);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
musictype_t S_MusicType()
|
||||
|
|
|
@ -527,13 +527,17 @@ static void run_queue()
|
|||
{
|
||||
if (queue_stopafterfade)
|
||||
I_StopDigSong();
|
||||
else if (queue_music_name[0] && I_StartDigSong(queue_music_name, queue_looping))
|
||||
else if (queue_music_name[0])
|
||||
{
|
||||
I_SetSongTrack(queue_track);
|
||||
if (queue_fadeinms)
|
||||
I_FadeMusicFromLevel(100, 0, queue_fadeinms, false);
|
||||
if (queue_position)
|
||||
I_SetMusicPosition(queue_position);
|
||||
I_StopDigSong();
|
||||
if (I_StartDigSong(queue_music_name, queue_looping))
|
||||
{
|
||||
I_SetSongTrack(queue_track);
|
||||
if (queue_fadeinms)
|
||||
I_FadeMusicFromLevel(100, 0, queue_fadeinms, false);
|
||||
if (queue_position)
|
||||
I_SetMusicPosition(queue_position);
|
||||
}
|
||||
}
|
||||
queuecleanup();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue