Explicitly set the preferred song in SSM's ctor, instead of handling it in
the music wheel. This way, we can re-set the preferred song at any time and have it take effect when we get back to the wheel; previously, if we'd already played a song, m_pCurSong would override it.
This commit is contained in:
@@ -258,12 +258,8 @@ bool MusicWheel::SelectSongOrCourse()
|
||||
{
|
||||
if( GAMESTATE->m_pCurSong && SelectSong( GAMESTATE->m_pCurSong ) )
|
||||
return true;
|
||||
if( GAMESTATE->m_pPreferredSong && SelectSong( GAMESTATE->m_pPreferredSong ) )
|
||||
return true;
|
||||
if( GAMESTATE->m_pCurCourse && SelectCourse( GAMESTATE->m_pCurCourse ) )
|
||||
return true;
|
||||
if( GAMESTATE->m_pPreferredCourse && SelectCourse( GAMESTATE->m_pPreferredCourse ) )
|
||||
return true;
|
||||
|
||||
// Select the first selectable song based on the sort order...
|
||||
vector<WheelItemData> &wiWheelItems = m_WheelItemDatas[m_SortOrder];
|
||||
|
||||
@@ -71,6 +71,15 @@ ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : ScreenWithMenuEleme
|
||||
/* Finish any previous stage. It's OK to call this when we havn't played a stage yet.
|
||||
* Do this before anything that might look at GAMESTATE->m_iCurrentStageIndex. */
|
||||
GAMESTATE->FinishStage();
|
||||
|
||||
/* If we have a preferred song, let it override the active song. That way, you
|
||||
* can set PreferredSong at any time (eg. during initial menus or evaluation) to
|
||||
* select the default song for the next play, without interfering with things
|
||||
* that still need pCurSong. */
|
||||
if( GAMESTATE->m_pPreferredSong )
|
||||
GAMESTATE->m_pCurSong.Set( GAMESTATE->m_pPreferredSong );
|
||||
if( GAMESTATE->m_pPreferredCourse )
|
||||
GAMESTATE->m_pCurCourse = GAMESTATE->m_pPreferredCourse;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user