diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 52f8c2f3f1..57a2a1dbcc 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -3847,9 +3847,6 @@ Coin Options,1=screen,ScreenCoinOptions;name,CoinOptions Config Key/Joy Mappings=1,together,SelectNone Config Key/Joy MappingsDefault= Config Key/Joy Mappings,1=screen,ScreenMapControllers;name,KeyJoyMappings -Download Machine Stats=1,together,SelectNone -Download Machine StatsDefault= -Download Machine Stats,1=DownloadMachineStats;name,DownloadMachineStats;screen,ScreenOptionsMenu Clear Machine Stats=1,together,SelectNone Clear Machine StatsDefault= Clear Machine Stats,1=ClearMachineStats;name,ClearMachineStats;screen,ScreenOptionsMenu @@ -3886,6 +3883,12 @@ Test Input,1=screen,ScreenTestInput;name,TestInput Test Lights=1,together,SelectNone Test LightsDefault= Test Lights,1=screen,ScreenTestLights;name,TestLights +Transfer Stats From Machine=1,together,SelectNone +Transfer Stats From MachineDefault= +Transfer Stats From Machine,1=TransferStatsFromMachine;name,TransferStatsFromMachine;screen,ScreenOptionsMenu +Transfer Stats To Machine=1,together,SelectNone +Transfer Stats To MachineDefault= +Transfer Stats To Machine,1=TransferStatsToMachine;name,TransferStatsToMachine;screen,ScreenOptionsMenu Set Machine Time=1,together,SelectNone Set Machine TimeDefault= Set Machine Time,1=screen,ScreenSetTime;name,SetMachineTime @@ -3893,6 +3896,8 @@ Network Options=1,together,SelectNone Network OptionsDefault= Network Options,1=screen,ScreenNetworkOptions;name,NetworkOptions + + [DancingCharacters] #2D Character X/Y positions in relation to the center #of the screen @@ -3932,21 +3937,6 @@ NoData=NO DATA [HighScore] EmptyName=STEP -[ScreenInsertCredit] -NextScreen=ScreenOptionsMenu - -[ScreenDownloadMachineStats] -NextScreen=ScreenOptionsMenu - -[ScreenClearMachineStats] -NextScreen=ScreenOptionsMenu - -[ScreenResetToDefaults] -NextScreen=ScreenOptionsMenu - -[ScreenClearBookkeepingData] -NextScreen=ScreenOptionsMenu - [ScreenSetTime] StyleIcon=0 MemoryCardIcons=0 diff --git a/stepmania/src/GameCommand.cpp b/stepmania/src/GameCommand.cpp index 26cff3bf52..a12f95227e 100644 --- a/stepmania/src/GameCommand.cpp +++ b/stepmania/src/GameCommand.cpp @@ -51,7 +51,8 @@ void GameCommand::Init() m_bClearBookkeepingData = false; m_bClearMachineStats = false; - m_bDownloadMachineStats = false; + m_bTransferStatsFromMachine = false; + m_bTransferStatsToMachine = false; m_bInsertCredit = false; m_bResetToFactoryDefaults = false; m_bStopMusic = false; @@ -268,9 +269,13 @@ void GameCommand::Load( int iIndex, const Commands& cmds ) { m_bClearMachineStats = true; } - else if( sName == "downloadmachinestats" ) + else if( sName == "transferstatsfrommachine" ) { - m_bDownloadMachineStats = true; + m_bTransferStatsFromMachine = true; + } + else if( sName == "transferstatstomachine" ) + { + m_bTransferStatsToMachine = true; } else if( sName == "insertcredit" ) { @@ -589,30 +594,75 @@ void GameCommand::Apply( PlayerNumber pn ) const PROFILEMAN->SaveMachineProfile(); SCREENMAN->SystemMessage( "Machine stats cleared." ); } - if( m_bDownloadMachineStats ) + if( m_bTransferStatsFromMachine ) { MEMCARDMAN->TryMountAllCards(); + bool bTriedToSave = false; FOREACH_PlayerNumber( pn ) { if( MEMCARDMAN->GetCardState(pn) != MEMORY_CARD_STATE_READY ) continue; // skip + bTriedToSave = true; + CString sDir = MEM_CARD_MOUNT_POINT[pn]; sDir += "MachineProfile/"; - bool bSaved = PROFILEMAN->GetMachineProfile()->SaveAllToDir( sDir, PREFSMAN->m_bSignProfileData ); if( bSaved ) SCREENMAN->SystemMessage( ssprintf("Machine stats saved to P%d card.",pn+1) ); else - SCREENMAN->SystemMessage( ssprintf("Error saving stats to P%d card.",pn+1) ); - return; + SCREENMAN->SystemMessage( ssprintf("Error saving machine stats to P%d card.",pn+1) ); + break; } - MEMCARDMAN->FlushAndReset(); + if( !bTriedToSave ) + SCREENMAN->SystemMessage( "Stats not saved - No memory cards ready." ); - SCREENMAN->SystemMessage( "Stats not saved - No memory cards ready." ); + MEMCARDMAN->FlushAndReset(); + } + if( m_bTransferStatsToMachine ) + { + MEMCARDMAN->TryMountAllCards(); + + bool bTriedToLoad = false; + FOREACH_PlayerNumber( pn ) + { + if( MEMCARDMAN->GetCardState(pn) != MEMORY_CARD_STATE_READY ) + continue; // skip + + bTriedToLoad = true; + + CString sDir = MEM_CARD_MOUNT_POINT[pn]; + sDir += "MachineProfile/"; + + Profile backup = *PROFILEMAN->GetMachineProfile(); + + Profile::LoadResult lr = PROFILEMAN->GetMachineProfile()->LoadAllFromDir( sDir, PREFSMAN->m_bSignProfileData ); + switch( lr ) + { + case Profile::success: + SCREENMAN->SystemMessage( ssprintf("Machine stats loaded from P%d card.",pn+1) ); + break; + case Profile::failed_no_profile: + SCREENMAN->SystemMessage( ssprintf("There is no profile on P%d card.",pn+1) ); + *PROFILEMAN->GetMachineProfile() = backup; + break; + case Profile::failed_tampered: + SCREENMAN->SystemMessage( ssprintf("The profile on P%d card contains tampered data.",pn+1) ); + *PROFILEMAN->GetMachineProfile() = backup; + break; + default: + ASSERT(0); + } + break; + } + + if( !bTriedToLoad ) + SCREENMAN->SystemMessage( "Stats not loaded - No memory cards ready." ); + + MEMCARDMAN->FlushAndReset(); } if( m_bInsertCredit ) { diff --git a/stepmania/src/GameCommand.h b/stepmania/src/GameCommand.h index 115212a669..39f3d1c0d3 100644 --- a/stepmania/src/GameCommand.h +++ b/stepmania/src/GameCommand.h @@ -56,7 +56,8 @@ struct GameCommand // used in SelectMode bool m_bClearBookkeepingData; bool m_bClearMachineStats; - bool m_bDownloadMachineStats; + bool m_bTransferStatsFromMachine; + bool m_bTransferStatsToMachine; bool m_bInsertCredit; bool m_bResetToFactoryDefaults; bool m_bStopMusic;