reload SSM help text on sort changed
clean up SortOrder names
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 871 B |
Binary file not shown.
|
After Width: | Height: | Size: 589 B |
@@ -103,17 +103,17 @@ static const CString SortOrderNames[NUM_SORT_ORDERS] = {
|
||||
"Preferred",
|
||||
"Group",
|
||||
"Title",
|
||||
"BPM",
|
||||
"Bpm",
|
||||
"Popularity",
|
||||
"TopGrade",
|
||||
"TopGrades",
|
||||
"Artist",
|
||||
"Genre",
|
||||
"EasyMeter",
|
||||
"MediumMeter",
|
||||
"HardMeter",
|
||||
"ChallengeMeter",
|
||||
"Mode",
|
||||
"Courses",
|
||||
"ModeMenu",
|
||||
"AllCourses",
|
||||
"Nonstop",
|
||||
"Oni",
|
||||
"Endless",
|
||||
@@ -122,6 +122,28 @@ static const CString SortOrderNames[NUM_SORT_ORDERS] = {
|
||||
XToString( SortOrder, NUM_SORT_ORDERS );
|
||||
StringToX( SortOrder );
|
||||
|
||||
static void LuaSortOrder(lua_State* L)
|
||||
{
|
||||
FOREACH_SortOrder( so )
|
||||
{
|
||||
CString s = SortOrderToString( so );
|
||||
|
||||
// [uppercase] -> _[uppercase]
|
||||
for( unsigned i=0; i<s.size(); i++ )
|
||||
{
|
||||
if( isupper(s[i]) )
|
||||
{
|
||||
s.insert( s.begin()+i, '_' );
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
s.MakeUpper();
|
||||
LUA->SetGlobal( "SORT"+s, so );
|
||||
}
|
||||
}
|
||||
REGISTER_WITH_LUA_FUNCTION( LuaSortOrder );
|
||||
|
||||
|
||||
static const CString TapNoteScoreNames[NUM_TAP_NOTE_SCORES] = {
|
||||
"None",
|
||||
|
||||
@@ -97,8 +97,8 @@ enum SortOrder {
|
||||
SORT_GROUP,
|
||||
SORT_TITLE,
|
||||
SORT_BPM,
|
||||
SORT_MOST_PLAYED,
|
||||
SORT_GRADE,
|
||||
SORT_POPULARITY,
|
||||
SORT_TOP_GRADES,
|
||||
SORT_ARTIST,
|
||||
SORT_GENRE,
|
||||
SORT_EASY_METER,
|
||||
|
||||
@@ -151,6 +151,7 @@ void GameState::Reset()
|
||||
m_PreferredDifficulty[p].Set( DIFFICULTY_INVALID );
|
||||
m_PreferredCourseDifficulty[p].Set( DIFFICULTY_MEDIUM );
|
||||
}
|
||||
m_SortOrder = SORT_INVALID;
|
||||
m_PreferredSortOrder = SORT_INVALID;
|
||||
m_PlayMode = PLAY_MODE_INVALID;
|
||||
m_bEditing = false;
|
||||
@@ -1938,6 +1939,7 @@ public:
|
||||
static int GetPreferredDifficulty( T* p, lua_State *L ) { lua_pushnumber(L, p->m_PreferredDifficulty[IArg(1)] ); return 1; }
|
||||
static int AnyPlayerHasRankingFeats( T* p, lua_State *L ) { lua_pushboolean(L, p->AnyPlayerHasRankingFeats() ); return 1; }
|
||||
static int GetPlayMode( T* p, lua_State *L ) { lua_pushnumber(L, p->m_PlayMode ); return 1; }
|
||||
static int GetSortOrder( T* p, lua_State *L ) { lua_pushnumber(L, p->m_SortOrder ); return 1; }
|
||||
static int IsGoalComplete( T* p, lua_State *L ) { lua_pushboolean(L, p->IsGoalComplete((PlayerNumber)IArg(1)) ); return 1; }
|
||||
|
||||
static void Register(lua_State *L)
|
||||
@@ -1961,6 +1963,7 @@ public:
|
||||
ADD_METHOD( GetPreferredDifficulty )
|
||||
ADD_METHOD( AnyPlayerHasRankingFeats )
|
||||
ADD_METHOD( GetPlayMode )
|
||||
ADD_METHOD( GetSortOrder )
|
||||
ADD_METHOD( IsGoalComplete )
|
||||
Luna<T>::Register( L );
|
||||
|
||||
|
||||
@@ -104,6 +104,7 @@ public:
|
||||
CString m_sPreferredSongGroup; // GROUP_ALL_MUSIC denotes no preferred group
|
||||
bool m_bChangedFailTypeOnScreenSongOptions; // true if FailType was changed in the song options screen
|
||||
BroadcastOnChange1D<Difficulty,NUM_PLAYERS> m_PreferredDifficulty;
|
||||
SortOrder m_SortOrder; // set 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
|
||||
|
||||
@@ -45,7 +45,7 @@ static const SortOrder g_SongSortOrders[] =
|
||||
SORT_GROUP,
|
||||
SORT_TITLE,
|
||||
SORT_BPM,
|
||||
SORT_MOST_PLAYED,
|
||||
SORT_POPULARITY,
|
||||
SORT_ARTIST,
|
||||
SORT_GENRE,
|
||||
};
|
||||
@@ -211,7 +211,10 @@ void MusicWheel::Load( CString sType )
|
||||
/* Only save the sort order if the player didn't already have one. If he did, don't
|
||||
* overwrite it. */
|
||||
if( GAMESTATE->m_PreferredSortOrder == SORT_INVALID )
|
||||
{
|
||||
GAMESTATE->m_PreferredSortOrder = m_SortOrder;
|
||||
GAMESTATE->m_SortOrder = m_SortOrder;
|
||||
}
|
||||
|
||||
/* Update for SORT_MOST_PLAYED. */
|
||||
SONGMAN->UpdateBest();
|
||||
@@ -424,7 +427,7 @@ void MusicWheel::GetSongList(vector<Song*> &arraySongs, SortOrder so, CString sP
|
||||
// SONGMAN->GetSongs( apAllSongs, GAMESTATE->m_sPreferredGroup, GAMESTATE->GetNumStagesLeft() );
|
||||
// else
|
||||
// SONGMAN->GetSongs( apAllSongs, GAMESTATE->GetNumStagesLeft() );
|
||||
if( so == SORT_MOST_PLAYED )
|
||||
if( so == SORT_POPULARITY )
|
||||
SONGMAN->GetBestSongs( apAllSongs, GAMESTATE->m_sPreferredSongGroup, GAMESTATE->GetNumStagesLeft() );
|
||||
else
|
||||
SONGMAN->GetSongs( apAllSongs, GAMESTATE->m_sPreferredSongGroup, GAMESTATE->GetNumStagesLeft() );
|
||||
@@ -514,8 +517,8 @@ void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas
|
||||
case SORT_GROUP:
|
||||
case SORT_TITLE:
|
||||
case SORT_BPM:
|
||||
case SORT_MOST_PLAYED:
|
||||
case SORT_GRADE:
|
||||
case SORT_POPULARITY:
|
||||
case SORT_TOP_GRADES:
|
||||
case SORT_ARTIST:
|
||||
case SORT_GENRE:
|
||||
case SORT_EASY_METER:
|
||||
@@ -550,12 +553,12 @@ void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas
|
||||
case SORT_BPM:
|
||||
SongUtil::SortSongPointerArrayByBPM( arraySongs );
|
||||
break;
|
||||
case SORT_MOST_PLAYED:
|
||||
case SORT_POPULARITY:
|
||||
if( (int) arraySongs.size() > MOST_PLAYED_SONGS_TO_SHOW )
|
||||
arraySongs.erase( arraySongs.begin()+MOST_PLAYED_SONGS_TO_SHOW, arraySongs.end() );
|
||||
bUseSections = false;
|
||||
break;
|
||||
case SORT_GRADE:
|
||||
case SORT_TOP_GRADES:
|
||||
SongUtil::SortSongPointerArrayByGrade( arraySongs );
|
||||
break;
|
||||
case SORT_ARTIST:
|
||||
@@ -608,7 +611,7 @@ void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas
|
||||
* so don't re-sort for them. */
|
||||
// /* We're using sections, so use the section name as the top-level
|
||||
// * sort. */
|
||||
if( so != SORT_GRADE && so != SORT_BPM )
|
||||
if( so != SORT_TOP_GRADES && so != SORT_BPM )
|
||||
SongUtil::SortSongPointerArrayBySectionName(arraySongs, so);
|
||||
|
||||
// make WheelItemDatas with sections
|
||||
@@ -767,7 +770,7 @@ void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas
|
||||
}
|
||||
|
||||
// init crowns
|
||||
if( so == SORT_MOST_PLAYED )
|
||||
if( so == SORT_POPULARITY )
|
||||
{
|
||||
// init crown icons
|
||||
for( unsigned i=0; i< min(3u,arrayWheelItemDatas.size()); i++ )
|
||||
@@ -1258,6 +1261,7 @@ bool MusicWheel::ChangeSort( SortOrder new_so ) // return true if change success
|
||||
/* Save the new preference. */
|
||||
if( IsSongSort(new_so) )
|
||||
GAMESTATE->m_PreferredSortOrder = new_so;
|
||||
GAMESTATE->m_SortOrder = new_so;
|
||||
|
||||
m_SortOrder = new_so;
|
||||
|
||||
|
||||
@@ -138,6 +138,7 @@ void ScreenNetSelectMusic::Input( const DeviceInput& DeviceI, const InputEventTy
|
||||
so = SORT_TITLE;
|
||||
|
||||
GAMESTATE->m_PreferredSortOrder = so;
|
||||
GAMESTATE->m_SortOrder = so;
|
||||
m_MusicWheel.SelectSection( ssprintf("%c", c ) );
|
||||
m_MusicWheel.SetOpenGroup( ssprintf("%c", c ), so );
|
||||
m_MusicWheel.Move( +1 );
|
||||
@@ -468,6 +469,7 @@ void ScreenNetSelectMusic::StartSelectedSong()
|
||||
}
|
||||
|
||||
GAMESTATE->m_PreferredSortOrder = m_MusicWheel.GetSortOrder();
|
||||
GAMESTATE->m_SortOrder = m_MusicWheel.GetSortOrder();
|
||||
GAMESTATE->m_pPreferredSong = pSong;
|
||||
|
||||
TweenOffScreen();
|
||||
|
||||
@@ -1476,6 +1476,14 @@ void ScreenSelectMusic::AfterMusicChange()
|
||||
g_bWantFallbackCdTitle = false;
|
||||
bool bWantBanner = true;
|
||||
|
||||
static SortOrder s_lastSortOrder = SORT_INVALID;
|
||||
if( m_MusicWheel.GetSortOrder() != s_lastSortOrder )
|
||||
{
|
||||
// Reload to let Lua metrics have a chance to change the help text.
|
||||
ScreenWithMenuElements::LoadHelpText();
|
||||
s_lastSortOrder = m_MusicWheel.GetSortOrder();
|
||||
}
|
||||
|
||||
switch( m_MusicWheel.GetSelectedType() )
|
||||
{
|
||||
case TYPE_SECTION:
|
||||
|
||||
@@ -84,9 +84,7 @@ void ScreenWithMenuElements::Init()
|
||||
m_textHelp->SetName( "HelpDisplay", "Help" );
|
||||
m_textHelp->Load();
|
||||
SET_XY_AND_ON_COMMAND( m_textHelp );
|
||||
CStringArray asHelpTips;
|
||||
split( THEME->GetMetric(m_sName,"HelpText"), "\n", asHelpTips );
|
||||
m_textHelp->SetTips( asHelpTips );
|
||||
LoadHelpText();
|
||||
this->AddChild( m_textHelp );
|
||||
|
||||
m_sprUnderlay.Load( THEME->GetPathB(m_sName,"underlay") );
|
||||
@@ -125,6 +123,13 @@ ScreenWithMenuElements::~ScreenWithMenuElements()
|
||||
SAFE_DELETE( m_textHelp );
|
||||
}
|
||||
|
||||
void ScreenWithMenuElements::LoadHelpText()
|
||||
{
|
||||
CStringArray asHelpTips;
|
||||
split( THEME->GetMetric(m_sName,"HelpText"), "\n", asHelpTips );
|
||||
m_textHelp->SetTips( asHelpTips );
|
||||
}
|
||||
|
||||
void ScreenWithMenuElements::StartPlayingMusic()
|
||||
{
|
||||
/* Some screens should leave the music alone (eg. ScreenPlayerOptions music
|
||||
|
||||
@@ -32,6 +32,7 @@ public:
|
||||
|
||||
protected:
|
||||
virtual void StartPlayingMusic();
|
||||
void LoadHelpText();
|
||||
|
||||
AutoActor m_sprUnderlay;
|
||||
AutoActor m_autoHeader;
|
||||
|
||||
@@ -254,9 +254,9 @@ CString SongUtil::GetSectionNameFromSongAndSort( const Song* pSong, SortOrder so
|
||||
iMaxBPM += iBPMGroupSize - (iMaxBPM%iBPMGroupSize) - 1;
|
||||
return ssprintf("%03d-%03d",iMaxBPM-(iBPMGroupSize-1), iMaxBPM);
|
||||
}
|
||||
case SORT_MOST_PLAYED:
|
||||
case SORT_POPULARITY:
|
||||
return "";
|
||||
case SORT_GRADE:
|
||||
case SORT_TOP_GRADES:
|
||||
{
|
||||
int iCounts[NUM_GRADES];
|
||||
PROFILEMAN->GetMachineProfile()->GetGrades( pSong, GAMESTATE->GetCurrentStyle()->m_StepsType, iCounts );
|
||||
|
||||
Reference in New Issue
Block a user