Only rebuild the option rows when they've actually changed.

This commit is contained in:
Steve Checkoway
2006-03-18 11:28:41 +00:00
parent 1d45c8a0fd
commit a79329daa3
2 changed files with 63 additions and 46 deletions
+27 -12
View File
@@ -163,17 +163,11 @@ void ScreenOptionsManageCourses::Init()
EDIT_MODE.Load( m_sName,"EditMode" ); EDIT_MODE.Load( m_sName,"EditMode" );
GAMESTATE->m_MasterPlayerNumber = GAMESTATE->GetFirstHumanPlayer(); GAMESTATE->m_MasterPlayerNumber = GAMESTATE->GetFirstHumanPlayer();
RebuildOptionRows();
} }
void ScreenOptionsManageCourses::BeginScreen() void ScreenOptionsManageCourses::RebuildOptionRows()
{ {
if( GAMESTATE->m_stEdit == STEPS_TYPE_INVALID ||
GAMESTATE->m_cdEdit == DIFFICULTY_INVALID )
{
SetNextCombination();
}
vector<OptionRowHandler*> vHands; vector<OptionRowHandler*> vHands;
int iIndex = 0; int iIndex = 0;
@@ -188,12 +182,14 @@ void ScreenOptionsManageCourses::BeginScreen()
iIndex++; iIndex++;
} }
m_vpCourses.clear();
SONGMAN->GetAllCourses( m_vpCourses, false ); SONGMAN->GetAllCourses( m_vpCourses, false );
switch( EDIT_MODE.GetValue() ) switch( EDIT_MODE.GetValue() )
{ {
default: default:
ASSERT(0); RageException::Throw( "ScreenOptionsManageCourses: Invalid edit mode:",
EditModeToString(EDIT_MODE.GetValue()).c_str() );
case EditMode_Practice: case EditMode_Practice:
case EditMode_Home: case EditMode_Home:
// Strip out non-edits. // Strip out non-edits.
@@ -239,6 +235,19 @@ void ScreenOptionsManageCourses::BeginScreen()
} }
ScreenOptions::InitMenu( vHands ); ScreenOptions::InitMenu( vHands );
m_bForceRebuild = false;
}
void ScreenOptionsManageCourses::BeginScreen()
{
if( GAMESTATE->m_stEdit == STEPS_TYPE_INVALID ||
GAMESTATE->m_cdEdit == DIFFICULTY_INVALID )
{
SetNextCombination();
}
if( m_bForceRebuild )
RebuildOptionRows();
ScreenOptions::BeginScreen(); ScreenOptions::BeginScreen();
@@ -256,6 +265,12 @@ void ScreenOptionsManageCourses::BeginScreen()
AfterChangeRow( GAMESTATE->m_MasterPlayerNumber ); AfterChangeRow( GAMESTATE->m_MasterPlayerNumber );
} }
void ScreenOptionsManageCourses::ReloadScreen()
{
m_bForceRebuild = true;
ScreenOptionsEditCourseSubMenu::ReloadScreen();
}
static LocalizedString COURSE_WILL_BE_LOST ( "ScreenOptionsManageCourses", "This course will be lost permanently." ); static LocalizedString COURSE_WILL_BE_LOST ( "ScreenOptionsManageCourses", "This course will be lost permanently." );
static LocalizedString CONTINUE_WITH_DELETE ( "ScreenOptionsManageCourses", "Continue with delete?" ); static LocalizedString CONTINUE_WITH_DELETE ( "ScreenOptionsManageCourses", "Continue with delete?" );
static LocalizedString ENTER_COURSE_NAME ( "ScreenOptionsManageCourses", "Enter a name for the course." ); static LocalizedString ENTER_COURSE_NAME ( "ScreenOptionsManageCourses", "Enter a name for the course." );
@@ -273,7 +288,7 @@ void ScreenOptionsManageCourses::HandleScreenMessage( const ScreenMessage SM )
if( !pCourse->IsAnEdit() ) if( !pCourse->IsAnEdit() )
FILEMAN->Remove( pCourse->GetCacheFilePath() ); FILEMAN->Remove( pCourse->GetCacheFilePath() );
delete pCourse; delete pCourse;
SCREENMAN->SetNewScreen( this->m_sName ); // reload ReloadScreen();
} }
else if( SM == SM_Failure ) else if( SM == SM_Failure )
{ {
@@ -325,7 +340,7 @@ void ScreenOptionsManageCourses::HandleScreenMessage( const ScreenMessage SM )
WriteCourse(); WriteCourse();
RefreshTrail(); RefreshTrail();
m_bForceRebuild = true;
this->HandleScreenMessage( SM_GoToNextScreen ); this->HandleScreenMessage( SM_GoToNextScreen );
} }
} }
@@ -347,7 +362,7 @@ void ScreenOptionsManageCourses::HandleScreenMessage( const ScreenMessage SM )
pCourse->m_sPath = sDir + sNewName + sExt; pCourse->m_sPath = sDir + sNewName + sExt;
pCourse->m_sMainTitle = sNewName; pCourse->m_sMainTitle = sNewName;
WriteCourse(); WriteCourse();
SCREENMAN->SetNewScreen( this->m_sName ); // reload ReloadScreen();
} }
} }
else if( SM == SM_BackFromContextMenu ) else if( SM == SM_BackFromContextMenu )
+4 -2
View File
@@ -24,7 +24,7 @@ class ScreenOptionsManageCourses : public ScreenOptionsEditCourseSubMenu
public: public:
void Init(); void Init();
virtual void BeginScreen(); virtual void BeginScreen();
virtual void ReloadScreen();
virtual void HandleScreenMessage( const ScreenMessage SM ); virtual void HandleScreenMessage( const ScreenMessage SM );
protected: protected:
@@ -34,11 +34,13 @@ protected:
virtual void AfterChangeRow( PlayerNumber pn ); virtual void AfterChangeRow( PlayerNumber pn );
virtual void ProcessMenuStart( const InputEventPlus &input ); virtual void ProcessMenuStart( const InputEventPlus &input );
private:
Course *GetCourseWithFocus() const; Course *GetCourseWithFocus() const;
void RebuildOptionRows();
vector<Course*> m_vpCourses; vector<Course*> m_vpCourses;
ThemeMetricEnum<EditMode> EDIT_MODE; ThemeMetricEnum<EditMode> EDIT_MODE;
bool m_bForceRebuild;
}; };
#endif #endif