diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index d0384a9e02..95e7c585d2 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -13,6 +13,7 @@ ScreenWidth=640 ScreenHeight=480 OverlayScreens=ScreenSystemLayer HomeEditMode=0 +MaxStepsLoadedFromProfile=-1 [ModeSwitcher] PrevModeX=-200 @@ -2190,6 +2191,9 @@ Class=ScreenEditMenu ExplanationX=SCREEN_CENTER_X ExplanationY=SCREEN_BOTTOM-70 ExplanationOnCommand=wrapwidthpixels,900;zoom,0.7 +NumStepsLoadedFromProfileX=SCREEN_RIGHT-180 +NumStepsLoadedFromProfileY=SCREEN_TOP+42 +NumStepsLoadedFromProfileOnCommand=zoom,0.7 StyleIcon=0 MemoryCardIcons=1 TimerSeconds=0 diff --git a/stepmania/src/CommonMetrics.cpp b/stepmania/src/CommonMetrics.cpp index 0ac4ec256c..72735e6e94 100644 --- a/stepmania/src/CommonMetrics.cpp +++ b/stepmania/src/CommonMetrics.cpp @@ -5,16 +5,17 @@ CString PLAYER_COLOR_NAME( size_t p ) { return ssprintf("ColorP%d",p+1); } -ThemeMetric DIFFICULTIES_TO_SHOW ("Common","DifficultiesToShow"); -ThemeMetric INITIAL_SCREEN ("Common","InitialScreen"); -ThemeMetric FIRST_RUN_INITIAL_SCREEN ("Common","FirstRunInitialScreen"); -ThemeMetric DEFAULT_MODIFIERS ("Common","DefaultModifiers" ); -ThemeMetric DEFAULT_CPU_MODIFIERS ("Common","DefaultCpuModifiers" ); -ThemeMetric COURSE_DIFFICULTIES_TO_SHOW ("Common","CourseDifficultiesToShow"); -ThemeMetric1D PLAYER_COLOR ("Common",PLAYER_COLOR_NAME,NUM_PLAYERS); -ThemeMetric JOIN_PAUSE_SECONDS ("Common","JoinPauseSeconds"); -ThemeMetric WINDOW_TITLE ("Common","WindowTitle"); -ThemeMetric HOME_EDIT_MODE ("Common","HomeEditMode"); +ThemeMetric DIFFICULTIES_TO_SHOW ("Common","DifficultiesToShow"); +ThemeMetric INITIAL_SCREEN ("Common","InitialScreen"); +ThemeMetric FIRST_RUN_INITIAL_SCREEN ("Common","FirstRunInitialScreen"); +ThemeMetric DEFAULT_MODIFIERS ("Common","DefaultModifiers" ); +ThemeMetric DEFAULT_CPU_MODIFIERS ("Common","DefaultCpuModifiers" ); +ThemeMetric COURSE_DIFFICULTIES_TO_SHOW ("Common","CourseDifficultiesToShow"); +ThemeMetric1D PLAYER_COLOR ("Common",PLAYER_COLOR_NAME,NUM_PLAYERS); +ThemeMetric JOIN_PAUSE_SECONDS ("Common","JoinPauseSeconds"); +ThemeMetric WINDOW_TITLE ("Common","WindowTitle"); +ThemeMetric HOME_EDIT_MODE ("Common","HomeEditMode"); +ThemeMetric MAX_STEPS_LOADED_FROM_PROFILE ("Common","MaxStepsLoadedFromProfile"); /* diff --git a/stepmania/src/CommonMetrics.h b/stepmania/src/CommonMetrics.h index ed85c8eaa7..d72ad75175 100644 --- a/stepmania/src/CommonMetrics.h +++ b/stepmania/src/CommonMetrics.h @@ -16,6 +16,8 @@ extern ThemeMetric1D PLAYER_COLOR; extern ThemeMetric JOIN_PAUSE_SECONDS; extern ThemeMetric WINDOW_TITLE; extern ThemeMetric HOME_EDIT_MODE; +extern ThemeMetric MAX_STEPS_LOADED_FROM_PROFILE; + #endif diff --git a/stepmania/src/ScreenEditMenu.cpp b/stepmania/src/ScreenEditMenu.cpp index e4c9676e10..b0c13384f9 100644 --- a/stepmania/src/ScreenEditMenu.cpp +++ b/stepmania/src/ScreenEditMenu.cpp @@ -12,10 +12,10 @@ #include "ThemeManager.h" #include "Steps.h" #include "song.h" +#include "CommonMetrics.h" #define PREV_SCREEN THEME->GetMetric(m_sName,"PrevScreen") #define EXPLANATION_TEXT( row ) THEME->GetMetric(m_sName,"Explanation"+EditMenuRowToString(row)) -#define HELP_TEXT THEME->GetMetric(m_sName,"HelpText") const ScreenMessage SM_RefreshSelector = (ScreenMessage)(SM_User+1); @@ -44,6 +44,12 @@ void ScreenEditMenu::Init() RefreshExplanationText(); this->AddChild( &m_textExplanation ); + m_textNumStepsLoadedFromProfile.SetName( "NumStepsLoadedFromProfile" ); + m_textNumStepsLoadedFromProfile.LoadFromFont( THEME->GetPathF(m_sName,"NumStepsLoadedFromProfile") ); + SET_XY_AND_ON_COMMAND( m_textNumStepsLoadedFromProfile ); + RefreshNumStepsLoadedFromProfile(); + this->AddChild( &m_textNumStepsLoadedFromProfile ); + this->SortByDrawOrder(); SOUND->PlayMusic( THEME->GetPathS(m_sName,"music") ); @@ -249,6 +255,14 @@ void ScreenEditMenu::RefreshExplanationText() ON_COMMAND( m_textExplanation ); } +void ScreenEditMenu::RefreshNumStepsLoadedFromProfile() +{ + CString s = ssprintf( "edits loaded: %d", SONGMAN->GetNumStepsLoadedFromProfile() ); + int iMaxStepsLoadedFromProfile = MAX_STEPS_LOADED_FROM_PROFILE; + if( iMaxStepsLoadedFromProfile != -1 ) + s += ssprintf( " / %d", iMaxStepsLoadedFromProfile ); + m_textNumStepsLoadedFromProfile.SetText( s ); +} /* * (c) 2002-2004 Chris Danford diff --git a/stepmania/src/ScreenEditMenu.h b/stepmania/src/ScreenEditMenu.h index d4073142ba..7ff7345a9c 100644 --- a/stepmania/src/ScreenEditMenu.h +++ b/stepmania/src/ScreenEditMenu.h @@ -23,10 +23,12 @@ private: void MenuStart( PlayerNumber pn ); void RefreshExplanationText(); + void RefreshNumStepsLoadedFromProfile(); EditMenu m_Selector; BitmapText m_textExplanation; + BitmapText m_textNumStepsLoadedFromProfile; }; #endif diff --git a/stepmania/src/Song.cpp b/stepmania/src/Song.cpp index 8106d5218e..97918fde5e 100644 --- a/stepmania/src/Song.cpp +++ b/stepmania/src/Song.cpp @@ -826,7 +826,7 @@ void Song::GetSteps( if( !iMaxToGet ) return; - const vector& vpSteps = GetStepsByStepsType(st); + const vector &vpSteps = st == STEPS_TYPE_INVALID ? GetAllSteps() : GetStepsByStepsType(st); for( unsigned i=0; i vSteps; - pSong->GetSteps( vSteps, STEPS_TYPE_INVALID, DIFFICULTY_INVALID ); - iNumEdits += vSteps.size(); + vector vpAllSteps = (*s)->GetAllSteps(); + + FOREACH( Steps*, vpAllSteps, ss ) + { + if( (*ss)->GetLoadedFromProfile() != PROFILE_SLOT_INVALID ) + iCount++; + } } - return iNumEdits; + return iCount; } @@ -1277,7 +1280,6 @@ public: } static int FindSong( T* p, lua_State *L ) { Song *pS = p->FindSong(SArg(1)); if(pS) pS->PushSelf(L); else lua_pushnil(L); return 1; } static int FindCourse( T* p, lua_State *L ) { Course *pC = p->FindCourse(SArg(1)); if(pC) pC->PushSelf(L); else lua_pushnil(L); return 1; } - static int GetTotalNumberOfEdits( T* p, lua_State *L ) { lua_pushnumber(L,p->GetTotalNumberOfEdits()); return 1; } static void Register(lua_State *L) { @@ -1285,7 +1287,6 @@ public: ADD_METHOD( GetAllCourses ) ADD_METHOD( FindSong ) ADD_METHOD( FindCourse ) - ADD_METHOD( GetTotalNumberOfEdits ) Luna::Register( L ); // Add global singleton if constructed already. If it's not constructed yet, diff --git a/stepmania/src/SongManager.h b/stepmania/src/SongManager.h index 5d7eb260d8..87a8883484 100644 --- a/stepmania/src/SongManager.h +++ b/stepmania/src/SongManager.h @@ -35,7 +35,7 @@ public: void SetPreferences(); void LoadAllFromProfile( ProfileSlot s ); // songs, edits - int GetTotalNumberOfEdits(); + int GetNumStepsLoadedFromProfile(); void FreeAllLoadedFromProfiles(); void LoadGroupSymLinks( CString sDir, CString sGroupFolder );