From 228ca9f166063d1bb45dba1d1d4a669ca6c3a54e Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Fri, 15 Apr 2005 07:18:40 +0000 Subject: [PATCH] reload SSM help text on sort changed clean up SortOrder names --- .../Graphics/MusicSortDisplay AllCourses.png | Bin 0 -> 1659 bytes .../Graphics/MusicSortDisplay ModeMenu.png | Bin 0 -> 871 bytes .../Graphics/MusicSortDisplay TopGrades.png | Bin 0 -> 589 bytes stepmania/src/GameConstantsAndTypes.cpp | 30 +++++++++++++++--- stepmania/src/GameConstantsAndTypes.h | 4 +-- stepmania/src/GameState.cpp | 3 ++ stepmania/src/GameState.h | 1 + stepmania/src/MusicWheel.cpp | 20 +++++++----- stepmania/src/ScreenNetSelectMusic.cpp | 2 ++ stepmania/src/ScreenSelectMusic.cpp | 8 +++++ stepmania/src/ScreenWithMenuElements.cpp | 11 +++++-- stepmania/src/ScreenWithMenuElements.h | 1 + stepmania/src/SongUtil.cpp | 4 +-- 13 files changed, 65 insertions(+), 19 deletions(-) create mode 100644 stepmania/Themes/default/Graphics/MusicSortDisplay AllCourses.png create mode 100644 stepmania/Themes/default/Graphics/MusicSortDisplay ModeMenu.png create mode 100644 stepmania/Themes/default/Graphics/MusicSortDisplay TopGrades.png diff --git a/stepmania/Themes/default/Graphics/MusicSortDisplay AllCourses.png b/stepmania/Themes/default/Graphics/MusicSortDisplay AllCourses.png new file mode 100644 index 0000000000000000000000000000000000000000..a95e0f0850c7e2d6d880ff8571b204d2301fcc44 GIT binary patch literal 1659 zcmV->288*EP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ>@kvBMRCwB4&M^wYFcik|)JjJW;8GAo=wwBxi$m{| z{G&7DtrU+Sd>wAF{2G zA=Yw(1G%%8TeHpddZAb8TMI0;ex+Ve|IXQA5XS*AGm`i_AkF~d)ktD4Ks*76HP9^D0dzB4sG7yIV z@hu=$1mYz?%!9+sUqGx2RSO3I0mOvFE(GF4w7>uXAt3GpIzkER7&#y{4NG8vfCmuQ z0M)QU`Ja&FklDzo;4c*aVZaSQZYTqq3$wErDKLHj@oy*_~E-_JV5~l#J-^H3o5_REd~f6 zSb*pti5&*wMZmlc3dLS%43q0?+fn)WkucTwowjW`GLgMo`K`5`P4A$6sj82LtNRGG!jL z&}GJA9w=~9fw&on8-TbCh~1&J4GI7VAXq4}B8k06EBu~A3sVMY6$VrL8LjMihs0)v zsv|drfC}z*AO=;P98j@4NM*%BXramqjZ{G>PK6fGIcRn>qNQvQ;Kvpq00G2=rMCHn z<}pDu^^8dB{vyf!KvTzrrJ%&d#s=7-fg%9qUj@~Iz|`>=%3lh^2|#=tO&`d;k-*5) zL8^IR+3XFp%yzoQ@g$(StI&1~a)4Zbwn(odiRl9Q@z9ueL=u03 z6u`)N9@Mf0skeuU1q1bWK(lZ#R7@Wz22yth+8%;|H)sJ2N~y6xwV)O>3$!f*N|A?w z?tF+GAOHab3y_`A8bu$t7E25SBVG;9M>D-l$^Zh{)lja0a)^N|8X3)&Li0Znznl3Ydk!fI9`{pGOKDSYe6m&_h7H4JlQi zcffWb)m|*nsu&c&8<5mlLQ@jVFMFYp%T7dXhEaw91Q2qvngeYJeTBvVtXc(??B$>a z7)TM2205?*+U`JB3#w(dLOX~IP_=)c{9{mgnA$JU)+ngK_XS#||A5-}1DdUvfcl?9 zv(9&@m^HKoT?6V_L)$_yGrvK_%8~j=@1XkLqT%<@Z1od8KmY=W1+C4I3@x=Skh;hl zfDXHb)a_<~TI>aF3QI!Og36NZplpR~0g(RysK+1L|4>3IY}cYSo%bU3jNc)p)&{8B z-_UaA3p87JLCsW#+W!`st=~f3_!wF><7*FHLKgrCFaVk-y2bX~wJ`ty002ovPDHLk FV1gytvM&Gt literal 0 HcmV?d00001 diff --git a/stepmania/Themes/default/Graphics/MusicSortDisplay ModeMenu.png b/stepmania/Themes/default/Graphics/MusicSortDisplay ModeMenu.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e64cd563a9985210902b147c0e525d2d95d078 GIT binary patch literal 871 zcmV-t1DO1YP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00009 za7bBm000XU000XU0RWnu7ytkQ-AP12R9M69*G;IERTKu`D_TP44{7Ki14(X(mI;9f zfuLv+{V8T?f`y`^5J>_DDthxO7eex(3~ojdCE~zA79yd8D8)j_glJ+WNTFnDn%K|% zn(PCc#r}@xa;h_FuqJD*_uKD&zqQuhyQ`|IuBxiKFc~l71ALsU4-aE#BQG}$!(42` zM>v4pScdV1{2ADao`SuCjd%j1GRz9})?jkmhBX*b;@YY;7JUJiQPtS~xDX~L5$Z5M zVoAU}(lSInZQf@F)0$8x-f^98b#F)#eh{sQS(MQ_#!avEO*-!2UA zm>^h(^{GNO25~+QWEZD?zZmWeqXX%_fLq;csN&P$-_l7z&V{Mnoh`m25PdZHkHrn( z))bo^1RKDt8bP)v|6}+o9H)~yCCHvY^0QP4>+oyl{~i+(sRcEcqQm$j_&;oNG25QS zJ_)fmIwi>T!mYGqs{*l|Ee^=;76q9XViz#AQ>VKnsNXD002ovPDHLkV1m6*gYf_W literal 0 HcmV?d00001 diff --git a/stepmania/Themes/default/Graphics/MusicSortDisplay TopGrades.png b/stepmania/Themes/default/Graphics/MusicSortDisplay TopGrades.png new file mode 100644 index 0000000000000000000000000000000000000000..b31f84daf44b8c997f01fd852267235687da4a98 GIT binary patch literal 589 zcmV-T0004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00009 za7bBm000XU000XU0RWnu7ytkP!%0LzR9M5^m(i_-APk1j3ar2iuD}Ye;0mn3yHBp* z3ar2itl$bcPVU2>oPz~^KPr^ZJkOshyUXv2Kw+0FrF@|FwyDN)vbYcE zJEGW$iEGU<5b;j%#LfkE!Z=KBy9%QTO&%MuWFOEs5wV7dljc}ZyjOUN8X#7HamscA zDL7N=TvXh61IQu&29OnZs)OT|42;leYB%P{Ty_yaBB7uG0tZ=vAp?vA zxQfVZY-9iivLM5MFDw9wjZB!Rc4E9=^#XBH2f?fnfWQnIQS6|ZqdvQ2E&<9BvRy#X zN?&$q#%u;LnS06OH%@glj_&|+d8XV${9Pc98nAQ2Yn=j_XiNVYh!;MymB||WRX|Qd z)o8>o&KOEW9g_$krKffgfFudXQ=974dXdf*@~Ar109o&zWKROg=)8Ae;?M!ape)HC zJ}7}~jVyE(Y@&)f b _[uppercase] + for( unsigned i=0; iSetGlobal( "SORT"+s, so ); + } +} +REGISTER_WITH_LUA_FUNCTION( LuaSortOrder ); + static const CString TapNoteScoreNames[NUM_TAP_NOTE_SCORES] = { "None", diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index d3fe58d4b8..f340cbdd66 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -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, diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index 420cc706b7..7046270db8 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -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::Register( L ); diff --git a/stepmania/src/GameState.h b/stepmania/src/GameState.h index 06daa76acf..f9029f3759 100644 --- a/stepmania/src/GameState.h +++ b/stepmania/src/GameState.h @@ -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 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 diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index 6ad278cda3..899dbe5843 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -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 &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 &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 &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 &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 &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; diff --git a/stepmania/src/ScreenNetSelectMusic.cpp b/stepmania/src/ScreenNetSelectMusic.cpp index 9823c4c674..8f06dc0159 100644 --- a/stepmania/src/ScreenNetSelectMusic.cpp +++ b/stepmania/src/ScreenNetSelectMusic.cpp @@ -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(); diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index 6daf7c3573..ec8e1e9dc2 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -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: diff --git a/stepmania/src/ScreenWithMenuElements.cpp b/stepmania/src/ScreenWithMenuElements.cpp index 33d0659efa..22a0d04a41 100644 --- a/stepmania/src/ScreenWithMenuElements.cpp +++ b/stepmania/src/ScreenWithMenuElements.cpp @@ -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 diff --git a/stepmania/src/ScreenWithMenuElements.h b/stepmania/src/ScreenWithMenuElements.h index 050ad40361..3bd8303b11 100644 --- a/stepmania/src/ScreenWithMenuElements.h +++ b/stepmania/src/ScreenWithMenuElements.h @@ -32,6 +32,7 @@ public: protected: virtual void StartPlayingMusic(); + void LoadHelpText(); AutoActor m_sprUnderlay; AutoActor m_autoHeader; diff --git a/stepmania/src/SongUtil.cpp b/stepmania/src/SongUtil.cpp index 72933a5f4c..9f2e2dcff8 100644 --- a/stepmania/src/SongUtil.cpp +++ b/stepmania/src/SongUtil.cpp @@ -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 );