diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index 1ca2d2deed..6ea175bce4 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -465,9 +465,6 @@ void GameState::LoadProfiles( bool bLoadEdits ) MEMCARDMAN->WaitForCheckingToComplete(); - FOREACH_PlayerNumber( pn ) - MEMCARDMAN->LockCard( pn ); - FOREACH_HumanPlayer( pn ) { // If a profile is already loaded, this was already called. @@ -475,9 +472,15 @@ void GameState::LoadProfiles( bool bLoadEdits ) continue; MEMCARDMAN->MountCard( pn ); - PROFILEMAN->LoadFirstAvailableProfile( pn, bLoadEdits ); // load full profile + bool bSuccess = PROFILEMAN->LoadFirstAvailableProfile( pn, bLoadEdits ); // load full profile MEMCARDMAN->UnmountCard( pn ); + if( !bSuccess ) + continue; + + /* Lock the card on successful load, so we won't allow it to be changed. */ + MEMCARDMAN->LockCard( pn ); + LoadCurrentSettingsFromProfile( pn ); Profile* pPlayerProfile = PROFILEMAN->GetProfile( pn ); diff --git a/stepmania/src/ScreenContinue.cpp b/stepmania/src/ScreenContinue.cpp index 1a5e2aba58..9a6c602b52 100644 --- a/stepmania/src/ScreenContinue.cpp +++ b/stepmania/src/ScreenContinue.cpp @@ -6,6 +6,7 @@ #include "RageLog.h" #include "InputEventPlus.h" #include "MenuTimer.h" +#include "MemoryCardManager.h" REGISTER_SCREEN_CLASS( ScreenContinue ); @@ -19,7 +20,10 @@ void ScreenContinue::BeginScreen() { bool bPlayerDone = GAMESTATE->m_iPlayerStageTokens[p] <= 0; if( bPlayerDone ) + { GAMESTATE->UnjoinPlayer( p ); + MEMCARDMAN->UnlockCard( p ); + } } ScreenWithMenuElements::BeginScreen(); diff --git a/stepmania/src/ScreenProfileLoad.cpp b/stepmania/src/ScreenProfileLoad.cpp index 24ce3e9f96..aea4b62d57 100644 --- a/stepmania/src/ScreenProfileLoad.cpp +++ b/stepmania/src/ScreenProfileLoad.cpp @@ -16,13 +16,6 @@ void ScreenProfileLoad::Init() void ScreenProfileLoad::BeginScreen() { m_bHaveProfileToLoad = GAMESTATE->HaveProfileToLoad(); - if( !m_bHaveProfileToLoad ) - { - /* We have nothing to load, so just lock the cards. */ - FOREACH_PlayerNumber( pn ) - MEMCARDMAN->LockCard( pn ); - } - ScreenWithMenuElements::BeginScreen(); }