ModeMenuAvailable metric removed; change Codes instead.
Merge the sort menu into the mode menu. GAMESTATE->m_SortOrder is now GAMESTATE->m_PreferredSortOrder. Allow the mode menu to have non-mutually-exclusive items.
This commit is contained in:
@@ -27,7 +27,6 @@ void Banner::CacheGlobalBanners()
|
||||
TEXTUREMAN->CacheTexture( SongBannerTexture(THEME->GetPathG("Common","fallback banner")) );
|
||||
TEXTUREMAN->CacheTexture( SongBannerTexture(THEME->GetPathG("Banner","roulette")) );
|
||||
TEXTUREMAN->CacheTexture( SongBannerTexture(THEME->GetPathG("Banner","random")) );
|
||||
TEXTUREMAN->CacheTexture( SongBannerTexture(THEME->GetPathG("Banner","Sort")) );
|
||||
TEXTUREMAN->CacheTexture( SongBannerTexture(THEME->GetPathG("Banner","Mode")) );
|
||||
}
|
||||
|
||||
@@ -95,12 +94,6 @@ void Banner::LoadAllMusic()
|
||||
m_bScrolling = false;
|
||||
}
|
||||
|
||||
void Banner::LoadSort()
|
||||
{
|
||||
Load( THEME->GetPathG("Banner","Sort") );
|
||||
m_bScrolling = false;
|
||||
}
|
||||
|
||||
void Banner::LoadMode()
|
||||
{
|
||||
Load( THEME->GetPathG("Banner","Mode") );
|
||||
|
||||
@@ -21,7 +21,6 @@ public:
|
||||
|
||||
void LoadFromSong( Song* pSong ); // NULL means no song
|
||||
void LoadAllMusic();
|
||||
void LoadSort();
|
||||
void LoadMode();
|
||||
void LoadFromGroup( CString sGroupName );
|
||||
void LoadFromCourse( Course* pCourse );
|
||||
|
||||
@@ -158,12 +158,6 @@ void FadingBanner::LoadAllMusic()
|
||||
m_Banner[m_iIndexLatest].LoadAllMusic();
|
||||
}
|
||||
|
||||
void FadingBanner::LoadSort()
|
||||
{
|
||||
BeforeChange();
|
||||
m_Banner[m_iIndexLatest].LoadSort();
|
||||
}
|
||||
|
||||
void FadingBanner::LoadMode()
|
||||
{
|
||||
BeforeChange();
|
||||
|
||||
@@ -17,7 +17,6 @@ public:
|
||||
bool Load( RageTextureID ID );
|
||||
void LoadFromSong( const Song* pSong ); // NULL means no song
|
||||
void LoadAllMusic();
|
||||
void LoadSort();
|
||||
void LoadMode();
|
||||
void LoadFromGroup( CString sGroupName );
|
||||
void LoadFromCourse( const Course* pCourse );
|
||||
|
||||
@@ -114,7 +114,7 @@ bool GameCommand::DescribesCurrentMode( PlayerNumber pn ) const
|
||||
return false;
|
||||
if( m_pTrail && GAMESTATE->m_pCurTrail[pn] != m_pTrail )
|
||||
return false;
|
||||
if( m_SortOrder != SORT_INVALID && GAMESTATE->m_SortOrder != m_SortOrder )
|
||||
if( m_SortOrder != SORT_INVALID && GAMESTATE->m_PreferredSortOrder != m_SortOrder )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@@ -593,7 +593,7 @@ void GameCommand::Apply( const vector<PlayerNumber> &vpns ) const
|
||||
if( !m_sSongGroup.empty() )
|
||||
GAMESTATE->m_sPreferredSongGroup = m_sSongGroup;
|
||||
if( m_SortOrder != SORT_INVALID )
|
||||
GAMESTATE->m_SortOrder = m_SortOrder;
|
||||
GAMESTATE->m_PreferredSortOrder = m_SortOrder;
|
||||
if( m_iUnlockIndex != -1 )
|
||||
UNLOCKMAN->UnlockCode( m_iUnlockIndex );
|
||||
if( m_sSoundPath != "" )
|
||||
|
||||
@@ -84,7 +84,6 @@ static const CString SortOrderNames[NUM_SORT_ORDERS] = {
|
||||
"MediumMeter",
|
||||
"HardMeter",
|
||||
"ChallengeMeter",
|
||||
"Sort",
|
||||
"Mode",
|
||||
"Courses",
|
||||
"Nonstop",
|
||||
|
||||
@@ -105,7 +105,6 @@ enum SortOrder {
|
||||
SORT_MEDIUM_METER,
|
||||
SORT_HARD_METER,
|
||||
SORT_CHALLENGE_METER,
|
||||
SORT_SORT_MENU,
|
||||
SORT_MODE_MENU,
|
||||
SORT_ALL_COURSES,
|
||||
SORT_NONSTOP_COURSES,
|
||||
|
||||
@@ -131,7 +131,7 @@ void GameState::Reset()
|
||||
m_PreferredDifficulty[p] = DIFFICULTY_INVALID;
|
||||
m_PreferredCourseDifficulty[p] = DIFFICULTY_MEDIUM;
|
||||
}
|
||||
m_SortOrder = SORT_INVALID;
|
||||
m_PreferredSortOrder = SORT_INVALID;
|
||||
m_PlayMode = PLAY_MODE_INVALID;
|
||||
m_bEditing = false;
|
||||
m_bDemonstrationOrJukebox = false;
|
||||
@@ -255,8 +255,8 @@ void GameState::PlayersFinalized()
|
||||
GAMESTATE->ApplyModifiers( pn, sModifiers );
|
||||
}
|
||||
// Only set the sort order if it wasn't already set by a GameCommand (or by an earlier profile)
|
||||
if( m_SortOrder == SORT_INVALID && pProfile->m_SortOrder != SORT_INVALID )
|
||||
m_SortOrder = pProfile->m_SortOrder;
|
||||
if( m_PreferredSortOrder == SORT_INVALID && pProfile->m_SortOrder != SORT_INVALID )
|
||||
m_PreferredSortOrder = pProfile->m_SortOrder;
|
||||
if( pProfile->m_LastDifficulty != DIFFICULTY_INVALID )
|
||||
m_PreferredDifficulty[pn] = pProfile->m_LastDifficulty;
|
||||
if( pProfile->m_LastCourseDifficulty != DIFFICULTY_INVALID )
|
||||
@@ -388,8 +388,8 @@ void GameState::SaveCurrentSettingsToProfile( PlayerNumber pn )
|
||||
Profile* pProfile = PROFILEMAN->GetProfile(pn);
|
||||
|
||||
pProfile->SetDefaultModifiers( this->m_pCurGame, m_pPlayerState[pn]->m_PlayerOptions.GetSavedPrefsString() );
|
||||
if( IsSongSort(m_SortOrder) )
|
||||
pProfile->m_SortOrder = m_SortOrder;
|
||||
if( IsSongSort(m_PreferredSortOrder) )
|
||||
pProfile->m_SortOrder = m_PreferredSortOrder;
|
||||
if( m_PreferredDifficulty[pn] != DIFFICULTY_INVALID )
|
||||
pProfile->m_LastDifficulty = m_PreferredDifficulty[pn];
|
||||
if( m_PreferredCourseDifficulty[pn] != DIFFICULTY_INVALID )
|
||||
|
||||
@@ -99,7 +99,7 @@ public:
|
||||
CString m_sPreferredSongGroup; // GROUP_ALL_MUSIC denotes no preferred group
|
||||
bool m_bChangedFailType; // true if FailType was changed in the song options screen
|
||||
Difficulty m_PreferredDifficulty[NUM_PLAYERS];
|
||||
SortOrder m_SortOrder; // used by MusicWheel
|
||||
SortOrder m_PreferredSortOrder; // used by MusicWheel
|
||||
bool m_bEditing; // NoteField does special stuff when this is true
|
||||
bool m_bDemonstrationOrJukebox; // ScreenGameplay does special stuff when this is true
|
||||
bool m_bJukeboxUsesModifiers;
|
||||
|
||||
@@ -50,7 +50,6 @@ ThemeMetric<bool> USE_3D ("MusicWheel","Use3D");
|
||||
ThemeMetric<float> NUM_WHEEL_ITEMS_TO_DRAW ("MusicWheel","NumWheelItems");
|
||||
#define NUM_WHEEL_ITEMS ((int)ceil(NUM_WHEEL_ITEMS_TO_DRAW+2))
|
||||
#define MOST_PLAYED_SONGS_TO_SHOW THEME->GetMetricI("MusicWheel","MostPlayedSongsToShow")
|
||||
#define SORT_MENU_CHOICE_NAMES THEME->GetMetric ("MusicWheel","SortMenuChoiceNames")
|
||||
#define MODE_MENU_CHOICE_NAMES THEME->GetMetric ("MusicWheel","ModeMenuChoiceNames")
|
||||
#define CHOICE( sChoiceName ) THEME->GetMetricM("MusicWheel",ssprintf("Choice%s",sChoiceName.c_str()))
|
||||
#define WHEEL_ITEM_ON_DELAY_CENTER THEME->GetMetricF("MusicWheel","WheelItemOnDelayCenter")
|
||||
@@ -79,6 +78,38 @@ MusicWheel::MusicWheel()
|
||||
{
|
||||
}
|
||||
|
||||
SortOrder ForceAppropriateSort( PlayMode pm, SortOrder so )
|
||||
{
|
||||
switch( pm )
|
||||
{
|
||||
// in course modes, force a particular sort
|
||||
case PLAY_MODE_ONI: return SORT_ONI_COURSES;
|
||||
case PLAY_MODE_NONSTOP: return SORT_NONSTOP_COURSES;
|
||||
case PLAY_MODE_ENDLESS: return SORT_ENDLESS_COURSES;
|
||||
}
|
||||
|
||||
/* If we're not in a course mode, don't start in a course sort. */
|
||||
switch( so )
|
||||
{
|
||||
case SORT_ONI_COURSES:
|
||||
case SORT_NONSTOP_COURSES:
|
||||
case SORT_ENDLESS_COURSES:
|
||||
so = SORT_INVALID;
|
||||
break;
|
||||
}
|
||||
|
||||
// if no preferred sort, fall back to theme default
|
||||
if( so == SORT_INVALID )
|
||||
{
|
||||
so = StringToSortOrder( DEFAULT_SORT );
|
||||
ASSERT( so != SORT_INVALID );
|
||||
return so;
|
||||
}
|
||||
|
||||
return so;
|
||||
}
|
||||
|
||||
|
||||
void MusicWheel::Load()
|
||||
{
|
||||
LOG->Trace( "MusicWheel::MusicWheel()" );
|
||||
@@ -113,7 +144,6 @@ void MusicWheel::Load()
|
||||
|
||||
|
||||
m_iSelection = 0;
|
||||
m_LastSortOrder = SORT_INVALID;
|
||||
|
||||
m_WheelState = STATE_SELECTING_MUSIC;
|
||||
m_fTimeLeftInState = 0;
|
||||
@@ -152,31 +182,13 @@ void MusicWheel::Load()
|
||||
GAMESTATE->m_SongOptions = so;
|
||||
}
|
||||
|
||||
/* Never start in the sort or mode menu. We won't have a valid m_LastSortOrder
|
||||
* and some elements may not initialize correctly. */
|
||||
switch( GAMESTATE->m_SortOrder )
|
||||
{
|
||||
case SORT_SORT_MENU:
|
||||
case SORT_MODE_MENU:
|
||||
GAMESTATE->m_SortOrder = SORT_INVALID;
|
||||
}
|
||||
m_SortOrder = GAMESTATE->m_PreferredSortOrder;
|
||||
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
// in course modes, force a particular sort
|
||||
case PLAY_MODE_ONI: GAMESTATE->m_SortOrder = SORT_ONI_COURSES; break;
|
||||
case PLAY_MODE_NONSTOP: GAMESTATE->m_SortOrder = SORT_NONSTOP_COURSES; break;
|
||||
case PLAY_MODE_ENDLESS: GAMESTATE->m_SortOrder = SORT_ENDLESS_COURSES; break;
|
||||
default:
|
||||
// if no player preferred sort, fall back to theme default
|
||||
if( GAMESTATE->m_SortOrder == SORT_INVALID )
|
||||
{
|
||||
GAMESTATE->m_SortOrder = StringToSortOrder( DEFAULT_SORT );
|
||||
ASSERT( GAMESTATE->m_SortOrder != SORT_INVALID );
|
||||
}
|
||||
/* Never start in the mode menu; some elements may not initialize correctly. */
|
||||
if( m_SortOrder == SORT_MODE_MENU )
|
||||
m_SortOrder = SORT_INVALID;
|
||||
|
||||
break;
|
||||
}
|
||||
m_SortOrder = ForceAppropriateSort( GAMESTATE->m_PlayMode, m_SortOrder );
|
||||
|
||||
/* Update for SORT_MOST_PLAYED. */
|
||||
SONGMAN->UpdateBest();
|
||||
@@ -197,6 +209,19 @@ void MusicWheel::Load()
|
||||
}
|
||||
LOG->Trace( "took: %s", times.c_str() );
|
||||
|
||||
/* Set m_LastModeMenuItem to the first item that matches the current mode. (Do this
|
||||
* after building wheel item data.) */
|
||||
{
|
||||
const vector<WheelItemData> &from = m_WheelItemDatas[SORT_MODE_MENU];
|
||||
for( unsigned i=0; i<from.size(); i++ )
|
||||
if( from[i].m_Action.DescribesCurrentModeForAllPlayers() )
|
||||
{
|
||||
m_sLastModeMenuItem = from[i].m_Action.m_sName;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// HACK: invalidate currently selected song in the case that it
|
||||
// cannot be played due to lack of stages remaining
|
||||
// checking for event mode shouldn't be necessary here
|
||||
@@ -236,7 +261,7 @@ bool MusicWheel::SelectSongOrCourse()
|
||||
return true;
|
||||
|
||||
// Select the first selectable song based on the sort order...
|
||||
vector<WheelItemData> &wiWheelItems = m_WheelItemDatas[GAMESTATE->m_SortOrder];
|
||||
vector<WheelItemData> &wiWheelItems = m_WheelItemDatas[m_SortOrder];
|
||||
for( unsigned i = 0; i < wiWheelItems.size(); i++ )
|
||||
{
|
||||
if( wiWheelItems[i].m_pSong )
|
||||
@@ -271,7 +296,7 @@ bool MusicWheel::SelectSong( Song *p )
|
||||
return false;
|
||||
|
||||
unsigned i;
|
||||
vector<WheelItemData> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
|
||||
vector<WheelItemData> &from = m_WheelItemDatas[m_SortOrder];
|
||||
for( i=0; i<from.size(); i++ )
|
||||
{
|
||||
if( from[i].m_pSong == p )
|
||||
@@ -301,7 +326,7 @@ bool MusicWheel::SelectCourse( Course *p )
|
||||
GAMESTATE->m_pCurCourse = p;
|
||||
|
||||
unsigned i;
|
||||
vector<WheelItemData> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
|
||||
vector<WheelItemData> &from = m_WheelItemDatas[m_SortOrder];
|
||||
for( i=0; i<from.size(); i++ )
|
||||
{
|
||||
if( from[i].m_pCourse == p )
|
||||
@@ -324,26 +349,17 @@ bool MusicWheel::SelectCourse( Course *p )
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool DescribesCurrentModeForAllPlayersAndSort( const GameCommand &gc, SortOrder so )
|
||||
bool MusicWheel::SelectModeMenuItem()
|
||||
{
|
||||
const SortOrder OldSortOrder = GAMESTATE->m_SortOrder;
|
||||
GAMESTATE->m_SortOrder = so;
|
||||
bool bRet = gc.DescribesCurrentModeForAllPlayers();
|
||||
GAMESTATE->m_SortOrder = OldSortOrder;
|
||||
return bRet;
|
||||
}
|
||||
|
||||
bool MusicWheel::SelectSort( SortOrder so )
|
||||
{
|
||||
if(so == SORT_INVALID)
|
||||
return false;
|
||||
|
||||
const vector<WheelItemData> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
|
||||
|
||||
/* Select the last-chosen option. */
|
||||
const vector<WheelItemData> &from = m_WheelItemDatas[m_SortOrder];
|
||||
unsigned i;
|
||||
for( i=0; i<from.size(); i++ )
|
||||
if( DescribesCurrentModeForAllPlayersAndSort( from[i].m_Action, so) )
|
||||
{
|
||||
const GameCommand &gc = from[i].m_Action;
|
||||
if( gc.m_sName == m_sLastModeMenuItem )
|
||||
break;
|
||||
}
|
||||
if( i == from.size() )
|
||||
return false;
|
||||
|
||||
@@ -352,7 +368,7 @@ bool MusicWheel::SelectSort( SortOrder so )
|
||||
|
||||
for( i=0; i<m_CurWheelItemData.size(); i++ )
|
||||
{
|
||||
if( !DescribesCurrentModeForAllPlayersAndSort( m_CurWheelItemData[i]->m_Action, so) )
|
||||
if( m_CurWheelItemData[i]->m_Action.m_sName != m_sLastModeMenuItem )
|
||||
continue;
|
||||
m_iSelection = i; // select it
|
||||
break;
|
||||
@@ -437,11 +453,10 @@ void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas
|
||||
{
|
||||
switch( so )
|
||||
{
|
||||
case SORT_SORT_MENU:
|
||||
case SORT_MODE_MENU:
|
||||
{
|
||||
arrayWheelItemDatas.clear(); // clear out the previous wheel items
|
||||
CString sNames = (so==SORT_SORT_MENU) ? SORT_MENU_CHOICE_NAMES : MODE_MENU_CHOICE_NAMES;
|
||||
CString sNames = MODE_MENU_CHOICE_NAMES;
|
||||
vector<CString> vsNames;
|
||||
split( sNames, ",", vsNames );
|
||||
for( unsigned i=0; i<vsNames.size(); ++i )
|
||||
@@ -939,30 +954,29 @@ void MusicWheel::Update( float fDeltaTime )
|
||||
|
||||
SCREENMAN->PostMessageToTopScreen( SM_SortOrderChanged, 0 );
|
||||
|
||||
SetOpenGroup(SongUtil::GetSectionNameFromSongAndSort( pPrevSelectedSong, GAMESTATE->m_SortOrder ));
|
||||
SetOpenGroup(SongUtil::GetSectionNameFromSongAndSort( pPrevSelectedSong, m_SortOrder ));
|
||||
|
||||
m_iSelection = 0;
|
||||
|
||||
//
|
||||
// Select the previously selected item
|
||||
//
|
||||
switch( GAMESTATE->m_SortOrder )
|
||||
switch( m_SortOrder )
|
||||
{
|
||||
default:
|
||||
// Look for the last selected song or course
|
||||
SelectSongOrCourse();
|
||||
break;
|
||||
case SORT_SORT_MENU:
|
||||
case SORT_MODE_MENU:
|
||||
SelectSort( m_LastSortOrder );
|
||||
SelectModeMenuItem();
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
// Change difficulty for sorts by meter
|
||||
// Change difficulty for sorts by meter - XXX: with GameCommand?
|
||||
//
|
||||
Difficulty dc = DIFFICULTY_INVALID;
|
||||
switch( GAMESTATE->m_SortOrder )
|
||||
switch( m_SortOrder )
|
||||
{
|
||||
case SORT_EASY_METER: dc = DIFFICULTY_EASY; break;
|
||||
case SORT_MEDIUM_METER: dc = DIFFICULTY_MEDIUM; break;
|
||||
@@ -1142,18 +1156,12 @@ void MusicWheel::ChangeMusic(int dist)
|
||||
bool MusicWheel::ChangeSort( SortOrder new_so ) // return true if change successful
|
||||
{
|
||||
ASSERT( new_so < NUM_SORT_ORDERS );
|
||||
if( GAMESTATE->m_SortOrder == new_so )
|
||||
if( m_SortOrder == new_so )
|
||||
return false;
|
||||
|
||||
/* Don't change to SORT_SORT_MENU or SORT_MODE_MENU if they don't have at least
|
||||
* two choices. */
|
||||
switch( new_so )
|
||||
{
|
||||
case SORT_SORT_MENU:
|
||||
case SORT_MODE_MENU:
|
||||
if( m_WheelItemDatas[new_so].size() < 2 )
|
||||
return false;
|
||||
}
|
||||
/* Don't change to SORT_MODE_MENU if it doesn't have at least two choices. */
|
||||
if( new_so == SORT_MODE_MENU && m_WheelItemDatas[new_so].size() < 2 )
|
||||
return false;
|
||||
|
||||
switch( m_WheelState )
|
||||
{
|
||||
@@ -1170,8 +1178,11 @@ bool MusicWheel::ChangeSort( SortOrder new_so ) // return true if change success
|
||||
|
||||
TweenOffScreen(true);
|
||||
|
||||
m_LastSortOrder = GAMESTATE->m_SortOrder;
|
||||
GAMESTATE->m_SortOrder = new_so;
|
||||
/* Save the new preference. */
|
||||
if( IsSongSort(new_so) )
|
||||
GAMESTATE->m_PreferredSortOrder = new_so;
|
||||
|
||||
m_SortOrder = new_so;
|
||||
|
||||
m_WheelState = STATE_FLYING_OFF_BEFORE_NEXT_SORT;
|
||||
return true;
|
||||
@@ -1180,16 +1191,12 @@ bool MusicWheel::ChangeSort( SortOrder new_so ) // return true if change success
|
||||
bool MusicWheel::NextSort() // return true if change successful
|
||||
{
|
||||
// don't allow NextSort when on the sort menu or mode menu
|
||||
switch( GAMESTATE->m_SortOrder )
|
||||
{
|
||||
case SORT_SORT_MENU:
|
||||
case SORT_MODE_MENU:
|
||||
if( m_SortOrder == SORT_MODE_MENU )
|
||||
return false;
|
||||
}
|
||||
|
||||
// find the index of the current sort
|
||||
int cur = 0;
|
||||
while( cur < int(ARRAYSIZE(SORT_ORDERS)) && SORT_ORDERS[cur] != GAMESTATE->m_SortOrder )
|
||||
while( cur < int(ARRAYSIZE(SORT_ORDERS)) && SORT_ORDERS[cur] != m_SortOrder )
|
||||
++cur;
|
||||
|
||||
// move to the next sort with wrapping
|
||||
@@ -1263,11 +1270,9 @@ bool MusicWheel::Select() // return true if this selection ends the screen
|
||||
LOG->Trace("New sort order selected: %s - %s",
|
||||
m_CurWheelItemData[m_iSelection]->m_sLabel.c_str(),
|
||||
SortOrderToString(m_CurWheelItemData[m_iSelection]->m_Action.m_SortOrder).c_str() );
|
||||
ChangeSort( m_CurWheelItemData[m_iSelection]->m_Action.m_SortOrder );
|
||||
|
||||
// Do this after ChangeSort so that be don't mess with
|
||||
// GAMESTATE->m_SortOrder before ChangeSort gets a crack at it.
|
||||
m_CurWheelItemData[m_iSelection]->m_Action.ApplyToAllPlayers();
|
||||
ChangeSort( GAMESTATE->m_PreferredSortOrder );
|
||||
m_sLastModeMenuItem = m_CurWheelItemData[m_iSelection]->m_Action.m_sName;
|
||||
return false;
|
||||
default:
|
||||
ASSERT(0);
|
||||
@@ -1307,7 +1312,7 @@ void MusicWheel::StartRandom()
|
||||
void MusicWheel::SetOpenGroup(CString group, SortOrder so)
|
||||
{
|
||||
if( so == SORT_INVALID)
|
||||
so = GAMESTATE->m_SortOrder;
|
||||
so = m_SortOrder;
|
||||
|
||||
m_sExpandedSectionName = group;
|
||||
|
||||
@@ -1544,7 +1549,7 @@ Song *MusicWheel::GetPreferredSelectionForRandomOrPortal()
|
||||
}
|
||||
|
||||
CString sPreferredGroup = m_sExpandedSectionName;
|
||||
vector<WheelItemData> &wid = m_WheelItemDatas[GAMESTATE->m_SortOrder];
|
||||
vector<WheelItemData> &wid = m_WheelItemDatas[m_SortOrder];
|
||||
|
||||
StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType;
|
||||
|
||||
|
||||
@@ -74,13 +74,14 @@ public:
|
||||
bool SelectSong( Song *p );
|
||||
bool SelectSection( const CString & SectionName );
|
||||
void SetOpenGroup(CString group, SortOrder so = SORT_INVALID);
|
||||
SortOrder GetSortOrder() const { return m_SortOrder; }
|
||||
|
||||
protected:
|
||||
void GetSongList(vector<Song*> &arraySongs, SortOrder so, CString sPreferredGroup );
|
||||
void BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItems, SortOrder so );
|
||||
bool SelectSongOrCourse();
|
||||
bool SelectCourse( Course *p );
|
||||
bool SelectSort( SortOrder so );
|
||||
bool SelectModeMenuItem();
|
||||
void ChangeMusic(int dist); /* +1 or -1 */
|
||||
|
||||
ScrollBar m_ScrollBar;
|
||||
@@ -93,7 +94,8 @@ protected:
|
||||
|
||||
int m_iSelection; // index into m_CurWheelItemData
|
||||
CString m_sExpandedSectionName;
|
||||
SortOrder m_LastSortOrder;
|
||||
CString m_sLastModeMenuItem;
|
||||
SortOrder m_SortOrder;
|
||||
|
||||
int m_iSwitchesLeftInSpinDown;
|
||||
float m_fLockedWheelVelocity;
|
||||
|
||||
@@ -328,8 +328,9 @@ done:
|
||||
}
|
||||
}
|
||||
|
||||
void PaneDisplay::SetFromGameState()
|
||||
void PaneDisplay::SetFromGameState( SortOrder so )
|
||||
{
|
||||
m_SortOrder = so;
|
||||
m_CurMode = GetMode();
|
||||
if( PaneMode[m_CurPane] != m_CurMode )
|
||||
SetFocus( GetNext( m_PreferredPaneForMode[m_CurMode], 0 ) );
|
||||
@@ -345,14 +346,13 @@ void PaneDisplay::SetFromGameState()
|
||||
|
||||
PaneModes PaneDisplay::GetMode() const
|
||||
{
|
||||
switch( GAMESTATE->m_SortOrder )
|
||||
switch( m_SortOrder )
|
||||
{
|
||||
case SORT_ALL_COURSES:
|
||||
case SORT_NONSTOP_COURSES:
|
||||
case SORT_ONI_COURSES:
|
||||
case SORT_ENDLESS_COURSES:
|
||||
return PANEMODE_COURSE;
|
||||
case SORT_SORT_MENU:
|
||||
case SORT_MODE_MENU:
|
||||
return m_CurMode; // leave it
|
||||
default:
|
||||
@@ -386,7 +386,7 @@ void PaneDisplay::SetFocus( PaneTypes NewPane )
|
||||
m_CurPane = NewPane;
|
||||
m_PreferredPaneForMode[m_CurMode] = NewPane;
|
||||
|
||||
SetFromGameState();
|
||||
SetFromGameState( m_SortOrder );
|
||||
}
|
||||
|
||||
bool PaneDisplay::PaneIsValid( PaneTypes p ) const
|
||||
|
||||
@@ -72,7 +72,7 @@ public:
|
||||
PaneDisplay();
|
||||
|
||||
void Load( PlayerNumber pn );
|
||||
void SetFromGameState();
|
||||
void SetFromGameState( SortOrder so );
|
||||
void Move( int dir );
|
||||
|
||||
void Update( float fDeltaTime );
|
||||
@@ -85,6 +85,7 @@ private:
|
||||
PaneModes GetMode() const;
|
||||
void SetContent( PaneContents c );
|
||||
|
||||
SortOrder m_SortOrder;
|
||||
AutoActor m_sprPaneUnder;
|
||||
AutoActor m_sprPaneOver;
|
||||
|
||||
|
||||
@@ -125,12 +125,12 @@ void ScreenNetSelectMusic::Input( const DeviceInput& DeviceI, const InputEventTy
|
||||
|
||||
if ( bHoldingCtrl && ( c >= 'A' ) && ( c <= 'Z' ) )
|
||||
{
|
||||
SortOrder so = GAMESTATE->m_SortOrder;
|
||||
SortOrder so = GAMESTATE->m_PreferredSortOrder;
|
||||
|
||||
if ( ( so != SORT_TITLE ) && ( so != SORT_ARTIST ) )
|
||||
so = SORT_TITLE;
|
||||
|
||||
GAMESTATE->m_SortOrder = so;
|
||||
GAMESTATE->m_PreferredSortOrder = so;
|
||||
m_MusicWheel.SetOpenGroup( ssprintf("%c", c ), so );
|
||||
m_MusicWheel.SelectSection( ssprintf("%c", c ) );
|
||||
m_MusicWheel.Move( +1 );
|
||||
@@ -280,7 +280,7 @@ void ScreenNetSelectMusic::MenuLeft( PlayerNumber pn, const InputEventType type
|
||||
|
||||
if ( type == IET_FIRST_PRESS )
|
||||
if ( bLeftAndRightPressed )
|
||||
m_MusicWheel.ChangeSort( SORT_SORT_MENU );
|
||||
m_MusicWheel.ChangeSort( SORT_MODE_MENU );
|
||||
else
|
||||
m_MusicWheel.Move( -1 );
|
||||
}
|
||||
@@ -293,7 +293,7 @@ void ScreenNetSelectMusic::MenuRight( PlayerNumber pn, const InputEventType type
|
||||
|
||||
if ( type == IET_FIRST_PRESS )
|
||||
if ( bLeftAndRightPressed )
|
||||
m_MusicWheel.ChangeSort( SORT_SORT_MENU );
|
||||
m_MusicWheel.ChangeSort( SORT_MODE_MENU );
|
||||
else
|
||||
m_MusicWheel.Move( +1 );
|
||||
}
|
||||
|
||||
@@ -279,7 +279,7 @@ ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : ScreenWithMenuEleme
|
||||
}
|
||||
|
||||
m_MusicSortDisplay.SetName( "SortIcon" );
|
||||
m_MusicSortDisplay.Set( GAMESTATE->m_SortOrder );
|
||||
m_MusicSortDisplay.Set( m_MusicWheel.GetSortOrder() );
|
||||
SET_XY( m_MusicSortDisplay );
|
||||
this->AddChild( &m_MusicSortDisplay );
|
||||
|
||||
@@ -470,7 +470,7 @@ void ScreenSelectMusic::TweenOnScreen()
|
||||
TweenSongPartsOnScreen( true );
|
||||
TweenCoursePartsOnScreen( true );
|
||||
|
||||
switch( GAMESTATE->m_SortOrder )
|
||||
switch( m_MusicWheel.GetSortOrder() )
|
||||
{
|
||||
case SORT_ALL_COURSES:
|
||||
case SORT_NONSTOP_COURSES:
|
||||
@@ -526,7 +526,7 @@ void ScreenSelectMusic::TweenOnScreen()
|
||||
|
||||
void ScreenSelectMusic::TweenOffScreen()
|
||||
{
|
||||
switch( GAMESTATE->m_SortOrder )
|
||||
switch( m_MusicWheel.GetSortOrder() )
|
||||
{
|
||||
case SORT_ALL_COURSES:
|
||||
case SORT_NONSTOP_COURSES:
|
||||
@@ -619,7 +619,7 @@ void ScreenSelectMusic::TweenScoreOnAndOffAfterChangeSort()
|
||||
m_sprHighScoreFrame[p].RunCommands( SCORE_FRAME_SORT_CHANGE_COMMAND(p) );
|
||||
}
|
||||
|
||||
switch( GAMESTATE->m_SortOrder )
|
||||
switch( m_MusicWheel.GetSortOrder() )
|
||||
{
|
||||
case SORT_ALL_COURSES:
|
||||
case SORT_NONSTOP_COURSES:
|
||||
@@ -627,7 +627,6 @@ void ScreenSelectMusic::TweenScoreOnAndOffAfterChangeSort()
|
||||
case SORT_ENDLESS_COURSES:
|
||||
SwitchDisplayMode( DISPLAY_COURSES );
|
||||
break;
|
||||
case SORT_SORT_MENU:
|
||||
case SORT_MODE_MENU:
|
||||
SwitchDisplayMode( DISPLAY_MODES );
|
||||
break;
|
||||
@@ -873,19 +872,6 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, InputEventType type,
|
||||
ChangeDifficulty( pn, +1 );
|
||||
return;
|
||||
}
|
||||
if( CodeDetector::EnteredSortMenu(GameI.controller) )
|
||||
{
|
||||
/* Ignore the SortMenu when in course mode. However, still check for the code, so
|
||||
* if people try pressing left+right+start in course mode, we don't pick the selected
|
||||
* course on them. */
|
||||
if( GAMESTATE->IsCourseMode() )
|
||||
; /* nothing */
|
||||
else if( ( GAMESTATE->IsExtraStage() && !PREFSMAN->m_bPickExtraStage ) || GAMESTATE->IsExtraStage2() )
|
||||
m_soundLocked.Play();
|
||||
else
|
||||
m_MusicWheel.ChangeSort( SORT_SORT_MENU );
|
||||
return;
|
||||
}
|
||||
if( CodeDetector::EnteredModeMenu(GameI.controller) )
|
||||
{
|
||||
if( ( GAMESTATE->IsExtraStage() && !PREFSMAN->m_bPickExtraStage ) || GAMESTATE->IsExtraStage2() )
|
||||
@@ -1259,7 +1245,7 @@ void ScreenSelectMusic::AfterStepsChange( PlayerNumber pn )
|
||||
m_GrooveRadar.SetFromSteps( pn, pSteps );
|
||||
m_MusicWheel.NotesOrTrailChanged( pn );
|
||||
if( SHOW_PANES )
|
||||
m_PaneDisplay[pn].SetFromGameState();
|
||||
m_PaneDisplay[pn].SetFromGameState( m_MusicWheel.GetSortOrder() );
|
||||
}
|
||||
|
||||
void ScreenSelectMusic::AfterTrailChange( PlayerNumber pn )
|
||||
@@ -1304,7 +1290,7 @@ void ScreenSelectMusic::AfterTrailChange( PlayerNumber pn )
|
||||
m_GrooveRadar.SetEmpty( pn );
|
||||
m_MusicWheel.NotesOrTrailChanged( pn );
|
||||
if( SHOW_PANES )
|
||||
m_PaneDisplay[pn].SetFromGameState();
|
||||
m_PaneDisplay[pn].SetFromGameState( m_MusicWheel.GetSortOrder() );
|
||||
}
|
||||
|
||||
void ScreenSelectMusic::SwitchToPreferredDifficulty()
|
||||
@@ -1451,11 +1437,8 @@ void ScreenSelectMusic::AfterMusicChange()
|
||||
break;
|
||||
case TYPE_SORT:
|
||||
bWantBanner = false; /* we load it ourself */
|
||||
switch( GAMESTATE->m_SortOrder )
|
||||
switch( m_MusicWheel.GetSortOrder() )
|
||||
{
|
||||
case SORT_SORT_MENU:
|
||||
m_Banner.LoadSort();
|
||||
break;
|
||||
case SORT_MODE_MENU:
|
||||
m_Banner.LoadMode();
|
||||
break;
|
||||
@@ -1729,15 +1712,17 @@ void ScreenSelectMusic::UpdateOptionsDisplays()
|
||||
|
||||
void ScreenSelectMusic::SortOrderChanged()
|
||||
{
|
||||
m_MusicSortDisplay.Set( GAMESTATE->m_SortOrder );
|
||||
m_MusicSortDisplay.Set( m_MusicWheel.GetSortOrder() );
|
||||
if( SHOW_PANES )
|
||||
FOREACH_HumanPlayer(pn)
|
||||
m_PaneDisplay[pn].SetFromGameState( m_MusicWheel.GetSortOrder() );
|
||||
|
||||
switch( GAMESTATE->m_SortOrder )
|
||||
switch( m_MusicWheel.GetSortOrder() )
|
||||
{
|
||||
case SORT_ALL_COURSES:
|
||||
case SORT_NONSTOP_COURSES:
|
||||
case SORT_ONI_COURSES:
|
||||
case SORT_ENDLESS_COURSES:
|
||||
case SORT_SORT_MENU:
|
||||
case SORT_MODE_MENU:
|
||||
// do nothing
|
||||
break;
|
||||
|
||||
@@ -282,7 +282,6 @@ CString SongUtil::GetSectionNameFromSongAndSort( const Song* pSong, SortOrder so
|
||||
return ssprintf("%02d", pSteps->GetMeter() );
|
||||
return "N/A";
|
||||
}
|
||||
case SORT_SORT_MENU:
|
||||
case SORT_MODE_MENU:
|
||||
return "";
|
||||
case SORT_ALL_COURSES:
|
||||
|
||||
Reference in New Issue
Block a user