From 1b38fe101cdce7c29e7c69db4361a8aa9c58bd67 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sat, 19 Apr 2003 18:51:13 +0000 Subject: [PATCH] Show banners while MusicWheel is moving fast. Broke SORT_GROUP into SORT_PREFERRED/SORT_GROUP (like DDREX) --- stepmania/src/Banner.cpp | 7 ++- stepmania/src/Banner.h | 2 +- stepmania/src/Course.cpp | 5 ++ stepmania/src/Course.h | 3 + stepmania/src/EditMenu.cpp | 1 + stepmania/src/FadingBanner.cpp | 84 ++++++++++++++++++++------- stepmania/src/FadingBanner.h | 17 +++++- stepmania/src/GameConstantsAndTypes.h | 1 + stepmania/src/GameState.cpp | 2 +- stepmania/src/MusicBannerWheel.cpp | 1 + stepmania/src/MusicSortDisplay.cpp | 3 +- stepmania/src/MusicWheel.cpp | 70 ++++++++++++++-------- stepmania/src/MusicWheel.h | 5 +- stepmania/src/RageTextureManager.cpp | 2 +- stepmania/src/ScreenSelectGroup.cpp | 4 ++ stepmania/src/ScreenSelectGroup.h | 2 +- stepmania/src/ScreenSelectMusic.cpp | 24 ++++---- stepmania/src/Song.cpp | 27 +++++++-- stepmania/src/StepMania.dsp | 20 +++---- stepmania/src/song.h | 3 +- 20 files changed, 197 insertions(+), 86 deletions(-) diff --git a/stepmania/src/Banner.cpp b/stepmania/src/Banner.cpp index df5be95c20..1a965de0a6 100644 --- a/stepmania/src/Banner.cpp +++ b/stepmania/src/Banner.cpp @@ -15,6 +15,8 @@ #include "RageBitmapTexture.h" #include "ThemeManager.h" #include "RageUtil.h" +#include "Song.h" +#include "RageTextureManager.h" Banner::Banner() @@ -22,7 +24,10 @@ Banner::Banner() m_bScrolling = false; m_fPercentScrolling = 0; -// LoadFallback(); + TEXTUREMAN->CacheTexture( THEME->GetPathToG("Banner all music") ); + TEXTUREMAN->CacheTexture( THEME->GetPathToG("Common fallback banner") ); + TEXTUREMAN->CacheTexture( THEME->GetPathToG("Banner roulette") ); + TEXTUREMAN->CacheTexture( THEME->GetPathToG("Banner random") ); } bool Banner::Load( RageTextureID ID ) diff --git a/stepmania/src/Banner.h b/stepmania/src/Banner.h index 113458720e..393b3cdd45 100644 --- a/stepmania/src/Banner.h +++ b/stepmania/src/Banner.h @@ -12,7 +12,7 @@ */ #include "CroppedSprite.h" -#include "song.h" +class Song; class Course; diff --git a/stepmania/src/Course.cpp b/stepmania/src/Course.cpp index 6141f7d8d5..3141145234 100644 --- a/stepmania/src/Course.cpp +++ b/stepmania/src/Course.cpp @@ -730,3 +730,8 @@ void SortCoursePointerArrayByDifficulty( vector &apCourses ) { sort( apCourses.begin(), apCourses.end(), CompareCoursePointersByDifficulty ); } + +bool Course::HasBanner() const +{ + return m_sBannerPath != "" && IsAFile(m_sBannerPath); +} diff --git a/stepmania/src/Course.h b/stepmania/src/Course.h index cb45e1138b..d8b9eaeb7d 100644 --- a/stepmania/src/Course.h +++ b/stepmania/src/Course.h @@ -47,6 +47,9 @@ public: bool m_bIsAutogen; // was this created by AutoGen? CString m_sPath; CString m_sName; + + bool HasBanner() const; + CString m_sBannerPath; CString m_sCDTitlePath; diff --git a/stepmania/src/EditMenu.cpp b/stepmania/src/EditMenu.cpp index 102fb787fe..30b44fa57f 100644 --- a/stepmania/src/EditMenu.cpp +++ b/stepmania/src/EditMenu.cpp @@ -17,6 +17,7 @@ #include "ThemeManager.h" #include "GameManager.h" #include "Notes.h" +#include "Song.h" // // Defines specific to EditMenu diff --git a/stepmania/src/FadingBanner.cpp b/stepmania/src/FadingBanner.cpp index c3687b9ccb..2c2af06671 100644 --- a/stepmania/src/FadingBanner.cpp +++ b/stepmania/src/FadingBanner.cpp @@ -13,47 +13,87 @@ #include "FadingBanner.h" +FadingBanner::FadingBanner() +{ + m_iIndexFront = 0; +} + void FadingBanner::SetCroppedSize( float fWidth, float fHeight ) { - m_FrontBanner.SetCroppedSize( fWidth, fHeight ); - Banner::SetCroppedSize( fWidth, fHeight ); + for( int i=0; i<2; i++ ) + m_Banner[i].SetCroppedSize( fWidth, fHeight ); } void FadingBanner::Update( float fDeltaTime ) { - m_FrontBanner.Update(fDeltaTime); - Banner::Update( fDeltaTime ); + Actor::Update( fDeltaTime ); + for( int i=0; i<2; i++ ) + m_Banner[i].Update( fDeltaTime ); } void FadingBanner::DrawPrimitives() { - Banner::DrawPrimitives(); - m_FrontBanner.Draw(); + Actor::DrawPrimitives(); + m_Banner[GetBackIndex()].Draw(); + m_Banner[m_iIndexFront].Draw(); } bool FadingBanner::Load( RageTextureID ID ) { BeforeChange(); - - if(!Banner::Load(ID)) - return false; - - Update(0); - return true; + return m_Banner[m_iIndexFront].Load(ID); } void FadingBanner::BeforeChange() { - // move the back banner to the front in preparation for a cross fade - if( this->GetTexture() ) - { - m_FrontBanner.Load( this->GetTexture()->GetID() ); - m_FrontBanner.SetScrolling( this->IsScrolling(), this->ScrollingPercent() ); - } + m_Banner[m_iIndexFront].SetDiffuse( RageColor(1,1,1,1) ); - m_FrontBanner.SetDiffuse( RageColor(1,1,1,1) ); - m_FrontBanner.StopTweening(); - m_FrontBanner.BeginTweening( 0.25f ); // fade out - m_FrontBanner.SetDiffuse( RageColor(1,1,1,0) ); + m_iIndexFront = GetBackIndex(); + + m_Banner[m_iIndexFront].SetDiffuse( RageColor(1,1,1,1) ); + m_Banner[m_iIndexFront].StopTweening(); + m_Banner[m_iIndexFront].BeginTweening( 0.25f ); // fade out + m_Banner[m_iIndexFront].SetDiffuse( RageColor(1,1,1,0) ); } +void FadingBanner::LoadFromSong( Song* pSong ) +{ + BeforeChange(); + m_Banner[GetBackIndex()].LoadFromSong( pSong ); +} + +void FadingBanner::LoadAllMusic() +{ + BeforeChange(); + m_Banner[GetBackIndex()].LoadAllMusic(); +} + +void FadingBanner::LoadFromGroup( CString sGroupName ) +{ + BeforeChange(); + m_Banner[GetBackIndex()].LoadFromGroup( sGroupName ); +} + +void FadingBanner::LoadFromCourse( Course* pCourse ) +{ + BeforeChange(); + m_Banner[GetBackIndex()].LoadFromCourse( pCourse ); +} + +void FadingBanner::LoadRoulette() +{ + BeforeChange(); + m_Banner[GetBackIndex()].LoadRoulette(); +} + +void FadingBanner::LoadRandom() +{ + BeforeChange(); + m_Banner[GetBackIndex()].LoadRandom(); +} + +void FadingBanner::LoadFallback() +{ + BeforeChange(); + m_Banner[GetBackIndex()].LoadFallback(); +} diff --git a/stepmania/src/FadingBanner.h b/stepmania/src/FadingBanner.h index 314dcb4cee..6608c9a608 100644 --- a/stepmania/src/FadingBanner.h +++ b/stepmania/src/FadingBanner.h @@ -13,20 +13,31 @@ #include "Banner.h" -class FadingBanner : public Banner +class FadingBanner : public Actor { public: - virtual ~FadingBanner() { } + FadingBanner(); + virtual bool Load( RageTextureID ID ); void SetCroppedSize( float fWidth, float fHeight ); + void LoadFromSong( Song* pSong ); // NULL means no song + void LoadAllMusic(); + void LoadFromGroup( CString sGroupName ); + void LoadFromCourse( Course* pCourse ); + void LoadRoulette(); + void LoadRandom(); + void LoadFallback(); + virtual void Update( float fDeltaTime ); virtual void DrawPrimitives(); protected: void BeforeChange(); - Banner m_FrontBanner; + Banner m_Banner[2]; + int m_iIndexFront; + int GetBackIndex() { return m_iIndexFront==0 ? 1 : 0; } }; #endif diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index 020b3bc61f..f149a92bd7 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -101,6 +101,7 @@ PlayMode StringToPlayMode( CString s ); enum SongSortOrder { + SORT_PREFERRED, SORT_GROUP, SORT_TITLE, SORT_BPM, diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index ae9738e9c9..1b5435b700 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -58,7 +58,7 @@ void GameState::Reset() m_sPreferredGroup = GROUP_ALL_MUSIC; for( p=0; pGetPathToG("MusicSortDisplay icons 1x4") ); + Load( THEME->GetPathToG("MusicSortDisplay icons 1x5") ); StopAnimating(); } @@ -29,6 +29,7 @@ void MusicSortDisplay::Set( SongSortOrder so ) { switch( so ) { + case SORT_PREFERRED: case SORT_GROUP: case SORT_TITLE: case SORT_BPM: diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index 65392ab7a7..5da7d034ea 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -27,6 +27,7 @@ #include "song.h" #include "Course.h" #include "RageDisplay.h" +#include "RageTextureManager.h" #define NUM_WHEEL_ITEMS min( MAX_WHEEL_ITEMS, THEME->GetMetricI("MusicWheel","NumWheelItems") ) @@ -98,12 +99,6 @@ MusicWheel::MusicWheel() m_soundStart.Load( THEME->GetPathToS("Common start") ); m_soundLocked.Load( THEME->GetPathToS("MusicWheel locked") ); - - // init m_mapGroupNameToBannerColor - - vector arraySongs; - SONGMAN->GetSongs( arraySongs, GAMESTATE->GetNumStagesLeft() ); - SortSongPointerArrayByGroup( arraySongs ); m_iSelection = 0; @@ -247,10 +242,13 @@ bool MusicWheel::SelectCourse( const Course *p ) return true; } -void MusicWheel::GetSongList(vector &arraySongs, bool bRoulette ) +void MusicWheel::GetSongList(vector &arraySongs, SongSortOrder so, CString sPreferredGroup ) { vector apAllSongs; - SONGMAN->GetSongs( apAllSongs, GAMESTATE->GetNumStagesLeft() ); + if( so==SORT_PREFERRED && GAMESTATE->m_sPreferredGroup!=GROUP_ALL_MUSIC) + SONGMAN->GetSongs( apAllSongs, GAMESTATE->m_sPreferredGroup, GAMESTATE->GetNumStagesLeft() ); + else + SONGMAN->GetSongs( apAllSongs, GAMESTATE->GetNumStagesLeft() ); // copy only songs that have at least one Notes for the current GameMode for( unsigned i=0; i &arraySongs, bool bRoulette ) if( pSong != GAMESTATE->m_pCurSong || (!GAMESTATE->IsExtraStage() && !GAMESTATE->IsExtraStage2()) ) { /* Hide songs that asked to be hidden via #SELECTABLE. */ - if( !bRoulette && !pSong->NormallyDisplayed() ) + if( so!=SORT_ROULETTE && !pSong->NormallyDisplayed() ) continue; - if( bRoulette && !pSong->RouletteDisplayed() ) + if( so==SORT_ROULETTE && !pSong->RouletteDisplayed() ) continue; } @@ -327,14 +325,17 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas /////////////////////////////////// vector arraySongs; - GetSongList(arraySongs, so == SORT_ROULETTE); + GetSongList(arraySongs, so, GAMESTATE->m_sPreferredGroup ); // sort the songs switch( so ) { - case SORT_GROUP: + case SORT_PREFERRED: case SORT_ROULETTE: - SortSongPointerArrayByGroup( arraySongs ); + SortSongPointerArrayByGroupAndDifficulty( arraySongs ); + break; + case SORT_GROUP: + SortSongPointerArrayByGroupAndTitle( arraySongs ); break; case SORT_TITLE: SortSongPointerArrayByTitle( arraySongs ); @@ -342,9 +343,6 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas case SORT_BPM: SortSongPointerArrayByBPM( arraySongs ); break; - // case SORT_ARTIST: - // SortSongPointerArrayByArtist( arraySongs ); - // break; case SORT_MOST_PLAYED: SortSongPointerArrayByMostPlayed( arraySongs ); if( arraySongs.size() > 30 ) @@ -355,7 +353,6 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas } - /////////////////////////////////// // Build an array of WheelItemDatas from the sorted list of Song*'s /////////////////////////////////// @@ -364,9 +361,10 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas bool bUseSections = false; switch( so ) { + case SORT_PREFERRED: bUseSections = false; break; case SORT_MOST_PLAYED: bUseSections = false; break; case SORT_BPM: bUseSections = false; break; - case SORT_GROUP: bUseSections = GAMESTATE->m_sPreferredGroup == GROUP_ALL_MUSIC; break; + case SORT_GROUP: bUseSections = true; break; case SORT_TITLE: bUseSections = true; break; case SORT_ROULETTE: bUseSections = false; break; default: ASSERT( 0 ); @@ -377,7 +375,7 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas if( bUseSections ) { - /* We're using sections, so use the section name as the top-levle + /* We're using sections, so use the section name as the top-level * sort. */ stable_sort(arraySongs.begin(), arraySongs.end(), CompareSongPointerArrayBySectionName(so)); @@ -391,9 +389,6 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas CString sThisSection = GetSectionNameFromSongAndSort( pSong, so ); int iSectionColorIndex = 0; - if( GAMESTATE->m_sPreferredGroup != GROUP_ALL_MUSIC && pSong->m_sGroupName != GAMESTATE->m_sPreferredGroup ) - continue; - if( sThisSection != sLastSection) // new section, make a section item { colorSection = (so==SORT_GROUP) ? SONGMAN->GetGroupColor(pSong->m_sGroupName) : SECTION_COLORS(iSectionColorIndex); @@ -410,8 +405,6 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas for( unsigned i=0; im_sPreferredGroup != GROUP_ALL_MUSIC && pSong->m_sGroupName != GAMESTATE->m_sPreferredGroup ) - continue; // skip arrayWheelItemDatas.push_back( WheelItemData(TYPE_SONG, pSong, "", NULL, SONGMAN->GetSongColor(pSong)) ); } } @@ -1051,6 +1044,35 @@ void MusicWheel::SetOpenGroup(CString group, SongSortOrder so) continue; m_CurWheelItemData.push_back(&from[i]); + // + // cache banners + // + switch( from[i].m_Type ) + { + case TYPE_SONG: + { + Song* pSong = from[i].m_pSong; + if( pSong->HasBanner() ) + TEXTUREMAN->CacheTexture( pSong->GetBannerPath() ); + } + break; + case TYPE_COURSE: + { + Course* pCourse = from[i].m_pCourse; + if( pCourse->HasBanner() ) + TEXTUREMAN->CacheTexture( pCourse->m_sBannerPath ); + } + break; + case TYPE_SECTION: + { + CString sPath = SONGMAN->GetGroupBannerPath( from[i].m_sSectionName ); + if( !sPath.empty() ) + TEXTUREMAN->CacheTexture( sPath ); + } + break; + default: + break; + } } m_iSelection = 0; diff --git a/stepmania/src/MusicWheel.h b/stepmania/src/MusicWheel.h index 666f01d527..a615505ecb 100644 --- a/stepmania/src/MusicWheel.h +++ b/stepmania/src/MusicWheel.h @@ -28,13 +28,10 @@ class Song; const int MAX_WHEEL_ITEMS = 15; - const ScreenMessage SM_SongChanged = ScreenMessage(SM_User+47); // this should be unique! const ScreenMessage SM_SortOrderChanged = ScreenMessage(SM_User+48); - - struct CompareSongPointerArrayBySectionName; class MusicWheel : public ActorFrame @@ -76,7 +73,7 @@ public: void RebuildMusicWheelItems(); protected: - void GetSongList(vector &arraySongs, bool bRoulette ); + void GetSongList(vector &arraySongs, SongSortOrder so, CString sPreferredGroup ); void BuildWheelItemDatas( vector &arrayWheelItems, SongSortOrder so ); void SetOpenGroup(CString group, SongSortOrder so = NUM_SORT_ORDERS); bool SelectSong(const Song *p); diff --git a/stepmania/src/RageTextureManager.cpp b/stepmania/src/RageTextureManager.cpp index 1ba925086e..74be541b87 100644 --- a/stepmania/src/RageTextureManager.cpp +++ b/stepmania/src/RageTextureManager.cpp @@ -93,7 +93,7 @@ RageTexture* RageTextureManager::LoadTexture( RageTextureID ID ) else pTexture = new RageBitmapTexture( ID ); -// LOG->Trace( "RageTextureManager: Loaded '%s'.", ID.filename.GetString() ); + LOG->Trace( "RageTextureManager: Loaded '%s'.", ID.filename.GetString() ); m_mapPathToTexture[ID] = pTexture; diff --git a/stepmania/src/ScreenSelectGroup.cpp b/stepmania/src/ScreenSelectGroup.cpp index 0f6494ee38..2680a90e36 100644 --- a/stepmania/src/ScreenSelectGroup.cpp +++ b/stepmania/src/ScreenSelectGroup.cpp @@ -38,6 +38,7 @@ ScreenSelectGroup::ScreenSelectGroup() : Screen("ScreenSelectGroup") if( !PREFSMAN->m_bShowSelectGroup ) { GAMESTATE->m_sPreferredGroup = GROUP_ALL_MUSIC; + GAMESTATE->m_SongSortOrder = SORT_GROUP; HandleScreenMessage( SM_GoToNextScreen ); return; } @@ -255,6 +256,9 @@ void ScreenSelectGroup::MenuStart( PlayerNumber pn ) GAMESTATE->m_pCurSong = NULL; GAMESTATE->m_sPreferredGroup = (m_GroupList.GetSelectionName()=="ALL MUSIC" ? GROUP_ALL_MUSIC : m_GroupList.GetSelectionName() ); + if( GAMESTATE->m_sPreferredGroup == GROUP_ALL_MUSIC ) + GAMESTATE->m_SongSortOrder = SORT_GROUP; + if( GAMESTATE->m_sPreferredGroup == GROUP_ALL_MUSIC ) SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("select group comment all music") ); else diff --git a/stepmania/src/ScreenSelectGroup.h b/stepmania/src/ScreenSelectGroup.h index 21abb6f506..25cfc6c4c1 100644 --- a/stepmania/src/ScreenSelectGroup.h +++ b/stepmania/src/ScreenSelectGroup.h @@ -46,7 +46,7 @@ private: Sprite m_sprExplanation; Sprite m_sprFrame; - Banner m_Banner; + FadingBanner m_Banner; BitmapText m_textNumber; Sprite m_sprContents; diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index 0c2db55bd7..d677c64c45 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -734,18 +734,18 @@ void ScreenSelectMusic::AfterMusicChange() /* If we're rouletting, and we're moving fast, don't touch the banner. */ bool no_banner_change = false; - if(m_MusicWheel.IsMoving()) - { - /* We're moving fast. Don't change banners if we're rouletting, or if - * we've been told to never change banners when moving fast. - * - * XXX: When we're not changing banners and not rouletting, show some - * kind of "moving fast" fallback banner. (When rouletting, just keep - * showing the roulette banner.) */ - if(m_MusicWheel.IsRouletting() || - (m_MusicWheel.IsMoving() && !PREFSMAN->m_bChangeBannersWhenFast)) - no_banner_change = true; - } +// if(m_MusicWheel.IsMoving()) +// { +// /* We're moving fast. Don't change banners if we're rouletting, or if +// * we've been told to never change banners when moving fast. +// * +// * XXX: When we're not changing banners and not rouletting, show some +// * kind of "moving fast" fallback banner. (When rouletting, just keep +// * showing the roulette banner.) */ +// if(m_MusicWheel.IsRouletting() || +// (m_MusicWheel.IsMoving() && !PREFSMAN->m_bChangeBannersWhenFast)) +// no_banner_change = true; +// } m_sprMarathonBalloon.StopTweening(); OFF_COMMAND( m_sprMarathonBalloon ); diff --git a/stepmania/src/Song.cpp b/stepmania/src/Song.cpp index 8e86611b6e..3d8d427735 100644 --- a/stepmania/src/Song.cpp +++ b/stepmania/src/Song.cpp @@ -11,12 +11,12 @@ ----------------------------------------------------------------------------- */ +#include "song.h" #include "Notes.h" #include "RageUtil.h" #include // for fmod #include "RageLog.h" #include "IniFile.h" -#include "song.h" #include "NoteData.h" #include "MsdFile.h" #include "RageSound.h" @@ -1071,7 +1071,7 @@ void SortSongPointerArrayByArtist( vector &arraySongPointers ) sort( arraySongPointers.begin(), arraySongPointers.end(), CompareSongPointersByArtist ); } -int CompareSongPointersByGroup(const Song *pSong1, const Song *pSong2) +int CompareSongPointersByGroupAndDifficulty(const Song *pSong1, const Song *pSong2) { const CString &sGroup1 = pSong1->m_sGroupName; const CString &sGroup2 = pSong2->m_sGroupName; @@ -1085,9 +1085,28 @@ int CompareSongPointersByGroup(const Song *pSong1, const Song *pSong2) return CompareSongPointersByDifficulty( pSong1, pSong2 ); } -void SortSongPointerArrayByGroup( vector &arraySongPointers ) +void SortSongPointerArrayByGroupAndDifficulty( vector &arraySongPointers ) { - sort( arraySongPointers.begin(), arraySongPointers.end(), CompareSongPointersByGroup ); + sort( arraySongPointers.begin(), arraySongPointers.end(), CompareSongPointersByGroupAndDifficulty ); +} + +int CompareSongPointersByGroupAndTitle(const Song *pSong1, const Song *pSong2) +{ + const CString &sGroup1 = pSong1->m_sGroupName; + const CString &sGroup2 = pSong2->m_sGroupName; + + if( sGroup1 < sGroup2 ) + return true; + if( sGroup1 > sGroup2 ) + return false; + + /* Same group; compare by name. */ + return CompareSongPointersByTitle( pSong1, pSong2 ); +} + +void SortSongPointerArrayByGroupAndTitle( vector &arraySongPointers ) +{ + sort( arraySongPointers.begin(), arraySongPointers.end(), CompareSongPointersByGroupAndTitle ); } bool CompareSongPointersByMostPlayed(const Song *pSong1, const Song *pSong2) diff --git a/stepmania/src/StepMania.dsp b/stepmania/src/StepMania.dsp index 2587949044..5fc304f4c4 100644 --- a/stepmania/src/StepMania.dsp +++ b/stepmania/src/StepMania.dsp @@ -60,7 +60,7 @@ IntDir=.\../Release6 TargetDir=\stepmania\stepmania TargetName=StepMania SOURCE="$(InputPath)" -PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ +PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi # End Special Build Tool @@ -95,7 +95,7 @@ IntDir=.\../Debug6 TargetDir=\stepmania\stepmania TargetName=StepMania-debug SOURCE="$(InputPath)" -PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ +PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi # End Special Build Tool @@ -1040,6 +1040,14 @@ SOURCE=.\CroppedSprite.h # End Source File # Begin Source File +SOURCE=.\FadingBanner.cpp +# End Source File +# Begin Source File + +SOURCE=.\FadingBanner.h +# End Source File +# Begin Source File + SOURCE=.\Transition.cpp # End Source File # Begin Source File @@ -1328,14 +1336,6 @@ SOURCE=.\EditMenu.h # End Source File # Begin Source File -SOURCE=.\FadingBanner.cpp -# End Source File -# Begin Source File - -SOURCE=.\FadingBanner.h -# End Source File -# Begin Source File - SOURCE=.\GradeDisplay.cpp # End Source File # Begin Source File diff --git a/stepmania/src/song.h b/stepmania/src/song.h index 10df5fc629..649cc61df3 100644 --- a/stepmania/src/song.h +++ b/stepmania/src/song.h @@ -250,7 +250,8 @@ void SortSongPointerArrayByDifficulty( vector &arraySongPointers ); void SortSongPointerArrayByTitle( vector &arraySongPointers ); void SortSongPointerArrayByBPM( vector &arraySongPointers ); void SortSongPointerArrayByArtist( vector &arraySongPointers ); -void SortSongPointerArrayByGroup( vector &arraySongPointers ); +void SortSongPointerArrayByGroupAndDifficulty( vector &arraySongPointers ); +void SortSongPointerArrayByGroupAndTitle( vector &arraySongPointers ); void SortSongPointerArrayByMostPlayed( vector &arraySongPointers );