From e4855e627f6f09016d63a2edf746a2770d7af820 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sat, 13 Mar 2004 19:20:24 +0000 Subject: [PATCH] persist PreferredDifficulty in Profile --- stepmania/src/GameState.cpp | 40 ++++++++++++++++++++++++------------- stepmania/src/Profile.cpp | 12 +++++++---- stepmania/src/Profile.h | 1 + 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index b9f907243c..8539a2e7e6 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -198,15 +198,18 @@ void GameState::PlayersFinalized() // apply saved default modifiers if any FOREACH_HumanPlayer( pn ) { - if( PROFILEMAN->IsUsingProfile(pn) ) + if( !PROFILEMAN->IsUsingProfile(pn) ) + continue; // skip + + Profile* pProfile = PROFILEMAN->GetProfile(pn); + + if( pProfile->m_bUsingProfileDefaultModifiers ) { - Profile* pProfile = PROFILEMAN->GetProfile(pn); - if( pProfile->m_bUsingProfileDefaultModifiers ) - { - GAMESTATE->m_PlayerOptions[pn].Init(); - GAMESTATE->ApplyModifiers( pn, pProfile->m_sDefaultModifiers ); - } + GAMESTATE->m_PlayerOptions[pn].Init(); + GAMESTATE->ApplyModifiers( pn, pProfile->m_sDefaultModifiers ); } + if( pProfile->m_PreferredDifficulty != DIFFICULTY_INVALID ) + GAMESTATE->m_PreferredDifficulty[pn] = pProfile->m_PreferredDifficulty; } @@ -288,19 +291,28 @@ void GameState::EndGame() CHECKPOINT; } - CHECKPOINT; - MEMCARDMAN->FlushAllDisks(); - CHECKPOINT; - BOOKKEEPER->WriteToDisk(); PROFILEMAN->SaveMachineProfile(); - for( p=0; pSaveProfile( (PlayerNumber)p ); - PROFILEMAN->UnloadProfile( (PlayerNumber)p ); + if( !PROFILEMAN->IsUsingProfile(pn) ) + continue; + + Profile* pProfile = PROFILEMAN->GetProfile(pn); + + // persist current settings + pProfile->m_PreferredDifficulty = m_PreferredDifficulty[pn]; + + PROFILEMAN->SaveProfile( pn ); + PROFILEMAN->UnloadProfile( pn ); } + // Reset the USB storage device numbers -after- saving + CHECKPOINT; + MEMCARDMAN->FlushAllDisks(); + CHECKPOINT; + SONGMAN->FreeAllLoadedFromProfiles(); } diff --git a/stepmania/src/Profile.cpp b/stepmania/src/Profile.cpp index 81a8deafd9..fa85c33c5b 100644 --- a/stepmania/src/Profile.cpp +++ b/stepmania/src/Profile.cpp @@ -69,6 +69,7 @@ void Profile::InitGeneralData() m_bUsingProfileDefaultModifiers = false; m_sDefaultModifiers = ""; m_SortOrder = SORT_INVALID; + m_PreferredDifficulty = DIFFICULTY_INVALID; m_iTotalPlays = 0; m_iTotalPlaySeconds = 0; m_iTotalGameplaySeconds = 0; @@ -567,7 +568,8 @@ XNode* Profile::SaveGeneralDataCreateNode() const pGeneralDataNode->AppendChild( "UsingProfileDefaultModifiers", m_bUsingProfileDefaultModifiers ); pGeneralDataNode->AppendChild( "DefaultModifiers", m_sDefaultModifiers ); - pGeneralDataNode->AppendChild( "SortOrder", SortOrderToString(m_SortOrder) ); + pGeneralDataNode->AppendChild( "SortOrder", SortOrderToString(m_SortOrder) ); + pGeneralDataNode->AppendChild( "PreferredDifficulty", DifficultyToString(m_PreferredDifficulty) ); pGeneralDataNode->AppendChild( "TotalPlays", m_iTotalPlays ); pGeneralDataNode->AppendChild( "TotalPlaySeconds", m_iTotalPlaySeconds ); pGeneralDataNode->AppendChild( "TotalGameplaySeconds", m_iTotalGameplaySeconds ); @@ -702,9 +704,11 @@ void Profile::LoadGeneralDataFromNode( const XNode* pNode ) pNode->GetChildValue( "UsingProfileDefaultModifiers", m_bUsingProfileDefaultModifiers ); pNode->GetChildValue( "DefaultModifiers", m_sDefaultModifiers ); - CString sSortOrder; - pNode->GetChildValue( "SortOrder", sSortOrder ); - m_SortOrder = StringToSortOrder( sSortOrder ); + CString s; + pNode->GetChildValue( "SortOrder", s ); + m_SortOrder = StringToSortOrder( s ); + pNode->GetChildValue( "PreferredDifficulty", s ); + m_PreferredDifficulty = StringToDifficulty( s ); pNode->GetChildValue( "TotalPlays", m_iTotalPlays ); pNode->GetChildValue( "TotalPlaySeconds", m_iTotalPlaySeconds ); pNode->GetChildValue( "TotalGameplaySeconds", m_iTotalGameplaySeconds ); diff --git a/stepmania/src/Profile.h b/stepmania/src/Profile.h index 89eb1ff2b2..6b95e38974 100644 --- a/stepmania/src/Profile.h +++ b/stepmania/src/Profile.h @@ -89,6 +89,7 @@ public: bool m_bUsingProfileDefaultModifiers; CString m_sDefaultModifiers; SortOrder m_SortOrder; + Difficulty m_PreferredDifficulty; int m_iTotalPlays; int m_iTotalPlaySeconds; int m_iTotalGameplaySeconds;