reload SSM help text on sort changed

clean up SortOrder names
This commit is contained in:
Chris Danford
2005-04-15 07:18:40 +00:00
parent 38bbd07fe0
commit 228ca9f166
13 changed files with 65 additions and 19 deletions
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

+26 -4
View File
@@ -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",
+2 -2
View File
@@ -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,
+3
View File
@@ -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 );
+1
View File
@@ -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
+12 -8
View File
@@ -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;
+2
View File
@@ -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();
+8
View File
@@ -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:
+8 -3
View File
@@ -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
+1
View File
@@ -32,6 +32,7 @@ public:
protected:
virtual void StartPlayingMusic();
void LoadHelpText();
AutoActor m_sprUnderlay;
AutoActor m_autoHeader;
+2 -2
View File
@@ -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 );