From 73d559156f9f6f499af3f2cc4b66a4b8e727a10c Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Tue, 16 May 2006 05:28:26 +0000 Subject: [PATCH] set default profile ID when creating profiles --- stepmania/src/Preference.h | 2 +- stepmania/src/ProfileManager.cpp | 10 ++++++++ stepmania/src/ScreenOptionsManageProfiles.cpp | 24 +++++++++++++++++-- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/stepmania/src/Preference.h b/stepmania/src/Preference.h index 7935620ffd..1508387906 100644 --- a/stepmania/src/Preference.h +++ b/stepmania/src/Preference.h @@ -113,10 +113,10 @@ private: template class Preference1D { +public: typedef Preference PreferenceT; vector m_v; -public: Preference1D( void pfn(size_t i, RString &sNameOut, T &defaultValueOut ), size_t N ) { for( size_t i=0; i*, PROFILEMAN->m_sDefaultLocalProfileID.m_v, i ) + { + if( (*i)->Get() == sProfileID ) + (*i)->Set( "" ); + } + return true; } else @@ -495,6 +503,8 @@ bool ProfileManager::DeleteLocalProfile( RString sProfileID ) } } + + LOG->Warn( "DeleteLocalProfile: ProfileID '%s' doesn't exist", sProfileID.c_str() ); return false; } diff --git a/stepmania/src/ScreenOptionsManageProfiles.cpp b/stepmania/src/ScreenOptionsManageProfiles.cpp index 76072fd6d1..0c45bc692e 100644 --- a/stepmania/src/ScreenOptionsManageProfiles.cpp +++ b/stepmania/src/ScreenOptionsManageProfiles.cpp @@ -161,7 +161,7 @@ void ScreenOptionsManageProfiles::BeginScreen() static LocalizedString CONFIRM_DELETE_PROFILE ( "ScreenOptionsManageProfiles", "Are you sure you want to delete the profile '%s'?" ); static LocalizedString CONFIRM_CLEAR_PROFILE ( "ScreenOptionsManageProfiles", "Are you sure you want to clear all data in the profile '%s'?" ); -static LocalizedString ENTER_PROFILE_NAME ( "ScreenOptionsManageProfiles", "Enter a name for the profile." ); +static LocalizedString ENTER_PROFILE_NAME ( "ScreenOptionsManageProfiles", "Enter a name for the profile." ); void ScreenOptionsManageProfiles::HandleScreenMessage( const ScreenMessage SM ) { if( SM == SM_GoToNextScreen ) @@ -183,11 +183,31 @@ void ScreenOptionsManageProfiles::HandleScreenMessage( const ScreenMessage SM ) RString sNewName = ScreenTextEntry::s_sLastAnswer; ASSERT( GAMESTATE->m_sEditLocalProfileID.Get().empty() ); + int iNumProfiles = PROFILEMAN->GetNumLocalProfiles(); + // create RString sProfileID; - PROFILEMAN->CreateLocalProfile( ScreenTextEntry::s_sLastAnswer, sProfileID ); + PROFILEMAN->CreateLocalProfile( ScreenTextEntry::s_sLastAnswer, sProfileID ); // TODO: Check return value GAMESTATE->m_sEditLocalProfileID.Set( sProfileID ); + if( iNumProfiles < NUM_PLAYERS ) + { + int iFirstUnused = -1; + FOREACH_CONST( Preference*, PROFILEMAN->m_sDefaultLocalProfileID.m_v, i ) + { + RString sLocalProfileID = (*i)->Get(); + if( sLocalProfileID.empty() ) + { + iFirstUnused = i - PROFILEMAN->m_sDefaultLocalProfileID.m_v.begin(); + break; + } + } + if( iFirstUnused != -1 ) + { + PROFILEMAN->m_sDefaultLocalProfileID.m_v[iFirstUnused]->Set( sProfileID ); + } + } + SCREENMAN->SetNewScreen( this->m_sName ); // reload } }