From 4b824bbe47735789b56d1bd7cd0a2e9cbc673784 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sun, 13 Mar 2005 00:59:03 +0000 Subject: [PATCH] export and import separately for each player --- stepmania/src/OptionRow.cpp | 25 ++++++--------------- stepmania/src/OptionRow.h | 2 -- stepmania/src/ScreenNetworkOptions.cpp | 4 ++-- stepmania/src/ScreenNetworkOptions.h | 4 ++-- stepmania/src/ScreenOptions.cpp | 9 +++++--- stepmania/src/ScreenOptions.h | 5 +++-- stepmania/src/ScreenOptionsMaster.cpp | 27 +++++++---------------- stepmania/src/ScreenOptionsMaster.h | 5 ++--- stepmania/src/ScreenPlayerOptions.cpp | 30 +++++++++++++------------- stepmania/src/ScreenPlayerOptions.h | 2 +- stepmania/src/ScreenProfileOptions.cpp | 13 +++++++++-- stepmania/src/ScreenProfileOptions.h | 4 ++-- stepmania/src/ScreenSMOnlineLogin.cpp | 14 +++++++++--- stepmania/src/ScreenSMOnlineLogin.h | 4 ++-- 14 files changed, 71 insertions(+), 77 deletions(-) diff --git a/stepmania/src/OptionRow.cpp b/stepmania/src/OptionRow.cpp index dd4e73b907..7d63ff015c 100644 --- a/stepmania/src/OptionRow.cpp +++ b/stepmania/src/OptionRow.cpp @@ -683,7 +683,8 @@ void OptionRow::Reload() return; if( m_RowDef.m_bExportOnChange ) - ExportOptions(); + FOREACH_OptionsPlayer( p ) + ExportOptions( p ); m_pHand->Reload( m_RowDef ); ASSERT( !m_RowDef.choices.empty() ); @@ -691,7 +692,8 @@ void OptionRow::Reload() FOREACH_PlayerNumber( p ) m_vbSelected[p].resize( m_RowDef.choices.size(), false ); - ImportOptions(); + FOREACH_OptionsPlayer( p ) + ImportOptions( p ); switch( m_RowDef.selectType ) { @@ -708,7 +710,8 @@ void OptionRow::Reload() } if( m_RowDef.m_bExportOnChange ) - ExportOptions(); + FOREACH_OptionsPlayer( p ) + ExportOptions( p ); UpdateEnabledDisabled(); UpdateText(); @@ -767,12 +770,6 @@ void OptionRow::ImportOptions( PlayerNumber pn ) VerifySelected( m_RowDef.selectType, m_vbSelected[pn], m_RowDef.name ); } -void OptionRow::ImportOptions() -{ - FOREACH_OptionsPlayer( p ) - ImportOptions( p ); -} - int OptionRow::ExportOptions( PlayerNumber pn ) { if( m_pHand == NULL ) @@ -791,16 +788,6 @@ int OptionRow::ExportOptions( PlayerNumber pn ) return iChangeMask; } -int OptionRow::ExportOptions() -{ - int iChangeMask = 0; - - FOREACH_OptionsPlayer( p ) - iChangeMask |= ExportOptions( p ); - - return iChangeMask; -} - /* * (c) 2001-2004 Chris Danford diff --git a/stepmania/src/OptionRow.h b/stepmania/src/OptionRow.h index cd0174c066..1d83fdf94a 100644 --- a/stepmania/src/OptionRow.h +++ b/stepmania/src/OptionRow.h @@ -80,9 +80,7 @@ public: void LoadOptionIcon( PlayerNumber pn, const CString &sText ); void ImportOptions( PlayerNumber pn ); - void ImportOptions(); int ExportOptions( PlayerNumber pn ); - int ExportOptions(); void AfterImportOptions( const CString &sTitle, diff --git a/stepmania/src/ScreenNetworkOptions.cpp b/stepmania/src/ScreenNetworkOptions.cpp index 5a16635f93..4b0dd3ab11 100644 --- a/stepmania/src/ScreenNetworkOptions.cpp +++ b/stepmania/src/ScreenNetworkOptions.cpp @@ -156,8 +156,8 @@ void ScreenNetworkOptions::MenuStart( PlayerNumber pn, const InputEventType type #endif } -void ScreenNetworkOptions::ImportOptions( int row ) { } -void ScreenNetworkOptions::ExportOptions( int row ) { } +void ScreenNetworkOptions::ImportOptions( int row, PlayerNumber pn ) { } +void ScreenNetworkOptions::ExportOptions( int row, PlayerNumber pn ) { } void ScreenNetworkOptions::UpdateConnectStatus( ) { diff --git a/stepmania/src/ScreenNetworkOptions.h b/stepmania/src/ScreenNetworkOptions.h index 45e1dfe5f7..7c8db3a96c 100644 --- a/stepmania/src/ScreenNetworkOptions.h +++ b/stepmania/src/ScreenNetworkOptions.h @@ -14,8 +14,8 @@ public: virtual void MenuStart( PlayerNumber pn, const InputEventType type ); private: - void ImportOptions( int row ); - void ExportOptions( int row ); + void ImportOptions( int row, PlayerNumber pn ); + void ExportOptions( int row, PlayerNumber pn ); void GoToNextScreen(); void GoToPrevScreen(); diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index b8ae8e7bec..620e3e6734 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -151,7 +151,8 @@ void ScreenOptions::InitMenu( InputMode im, const vector &v row.LoadMetrics( OPTION_ROW_TYPE ); row.LoadNormal( vDefs[r], vHands[r], bFirstRowGoesDown ); - this->ImportOptions( r ); + FOREACH_HumanPlayer( p ) + this->ImportOptions( r, p ); CHECKPOINT_M( ssprintf("row %i: %s", r, row.GetRowDef().name.c_str()) ); @@ -524,7 +525,8 @@ void ScreenOptions::HandleScreenMessage( const ScreenMessage SM ) break; case SM_GoToNextScreen: for( unsigned r=0; rExportOptions(r); + FOREACH_HumanPlayer( p ) + this->ExportOptions( r, p ); this->GoToNextScreen(); break; case SM_BeginFadingOut: @@ -983,7 +985,8 @@ void ScreenOptions::ChangeValueInRow( PlayerNumber pn, int iDelta, bool Repeat ) m_SoundChangeCol.Play(); if( row.GetRowDef().m_bExportOnChange ) - ExportOptions( iCurRow ); + FOREACH_HumanPlayer( p ) + ExportOptions( iCurRow, p ); } diff --git a/stepmania/src/ScreenOptions.h b/stepmania/src/ScreenOptions.h index 7c2f64dc8d..e60b9f4b55 100644 --- a/stepmania/src/ScreenOptions.h +++ b/stepmania/src/ScreenOptions.h @@ -32,8 +32,9 @@ public: virtual void HandleScreenMessage( const ScreenMessage SM ); protected: - virtual void ImportOptions( int row ) = 0; - virtual void ExportOptions( int row ) = 0; + virtual void ImportOptions( int row, PlayerNumber pn ) = 0; + virtual void ExportOptions( int row, PlayerNumber pn ) = 0; + void InitOptionsText(); void GetWidthXY( PlayerNumber pn, int iRow, int iChoiceOnRow, int &iWidthOut, int &iXOut, int &iYOut ); CString GetExplanationText( int row ) const; diff --git a/stepmania/src/ScreenOptionsMaster.cpp b/stepmania/src/ScreenOptionsMaster.cpp index a038aae85e..13eba31d34 100644 --- a/stepmania/src/ScreenOptionsMaster.cpp +++ b/stepmania/src/ScreenOptionsMaster.cpp @@ -122,29 +122,17 @@ void ScreenOptionsMaster::Update( float fDelta ) ScreenOptions::Update( fDelta ); } -void ScreenOptionsMaster::ImportOptions( int r ) +void ScreenOptionsMaster::ImportOptions( int r, PlayerNumber pn ) { + ASSERT( GAMESTATE->IsHumanPlayer(pn) ); OptionRow &row = *m_Rows[r]; - row.ImportOptions(); + row.ImportOptions( pn ); } -/* Import only settings specific to the given player. */ -void ScreenOptionsMaster::ImportOptionsForPlayer( PlayerNumber pn ) -{ - if( !GAMESTATE->IsHumanPlayer(pn) ) - return; - - for( unsigned i = 0; i < OptionRowHandlers.size(); ++i ) - { - OptionRow &row = *m_Rows[i]; - row.ImportOptions( pn ); - } -} - -void ScreenOptionsMaster::ExportOptions( int r ) +void ScreenOptionsMaster::ExportOptions( int r, PlayerNumber pn ) { OptionRow &row = *m_Rows[r]; - m_iChangeMask |= row.ExportOptions(); + m_iChangeMask |= row.ExportOptions( pn ); } void ScreenOptionsMaster::BeginFadingOut() @@ -251,8 +239,9 @@ void ScreenOptionsMaster::HandleScreenMessage( const ScreenMessage SM ) for( unsigned r = 0; r < OptionRowHandlers.size(); ++r ) { CHECKPOINT_M( ssprintf("%i/%i", r, int(OptionRowHandlers.size())) ); - - ExportOptions( r ); + + FOREACH_HumanPlayer( p ) + ExportOptions( r, p ); } if( m_iChangeMask & OPT_APPLY_ASPECT_RATIO ) diff --git a/stepmania/src/ScreenOptionsMaster.h b/stepmania/src/ScreenOptionsMaster.h index 4ad8a55686..7a760a7d6f 100644 --- a/stepmania/src/ScreenOptionsMaster.h +++ b/stepmania/src/ScreenOptionsMaster.h @@ -23,9 +23,8 @@ protected: protected: void HandleScreenMessage( const ScreenMessage SM ); - virtual void ImportOptions( int row ); - virtual void ExportOptions( int row ); - virtual void ImportOptionsForPlayer( PlayerNumber pn ); // used by ScreenPlayerOptions + virtual void ImportOptions( int row, PlayerNumber pn ); + virtual void ExportOptions( int row, PlayerNumber pn ); virtual void BeginFadingOut(); virtual void GoToNextScreen(); diff --git a/stepmania/src/ScreenPlayerOptions.cpp b/stepmania/src/ScreenPlayerOptions.cpp index 6bfeb8290a..e9919b77b6 100644 --- a/stepmania/src/ScreenPlayerOptions.cpp +++ b/stepmania/src/ScreenPlayerOptions.cpp @@ -58,14 +58,15 @@ void ScreenPlayerOptions::Init() SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("player options intro") ); - FOREACH_HumanPlayer( pn ) + FOREACH_HumanPlayer( p ) { - m_sprCancelAll[pn].LoadAndSetName( "ScreenPlayerOptions", ssprintf("CancelAllP%d",pn+1) ); - SET_XY_AND_ON_COMMAND( m_sprCancelAll[pn] ); - this->AddChild( m_sprCancelAll[pn] ); + m_sprCancelAll[p].LoadAndSetName( "ScreenPlayerOptions", ssprintf("CancelAllP%d",p+1) ); + SET_XY_AND_ON_COMMAND( m_sprCancelAll[p] ); + this->AddChild( m_sprCancelAll[p] ); } - UpdateDisqualified(); + FOREACH_HumanPlayer( p ) + UpdateDisqualified( p ); } @@ -141,16 +142,18 @@ void ScreenPlayerOptions::Input( const DeviceInput& DeviceI, const InputEventTyp COMMAND( m_sprCancelAll[pn], "Show" ); - this->ImportOptionsForPlayer( pn ); + for( unsigned r=0; rImportOptions( r, pn ); this->PositionUnderlines(); - this->UpdateDisqualified(); + this->UpdateDisqualified( pn ); } ScreenOptionsMaster::Input( DeviceI, type, GameI, MenuI, StyleI ); // UGLY: Update m_Disqualified whenever Start is pressed if( MenuI.IsValid() && MenuI.button == MENU_BUTTON_START ) - UpdateDisqualified(); + FOREACH_HumanPlayer( p ) + UpdateDisqualified( p ); } void ScreenPlayerOptions::HandleScreenMessage( const ScreenMessage SM ) @@ -182,17 +185,14 @@ void ScreenPlayerOptions::HandleScreenMessage( const ScreenMessage SM ) ScreenOptionsMaster::HandleScreenMessage( SM ); } -void ScreenPlayerOptions::UpdateDisqualified() +void ScreenPlayerOptions::UpdateDisqualified( PlayerNumber pn ) { // save current player options - PlayerOptions po[NUM_PLAYERS]; - - FOREACH_PlayerNumber( p ) - po[p] = GAMESTATE->m_pPlayerState[p]->m_PlayerOptions; + PlayerOptions po = GAMESTATE->m_pPlayerState[pn]->m_PlayerOptions; // export the currently selection options, which will fill GAMESTATE->m_PlayerOptions for( unsigned r=0; rSetHidden( !bIsHandicap ); // restore previous player options in case the user escapes back after this - GAMESTATE->m_pPlayerState[p]->m_PlayerOptions = po[p]; + GAMESTATE->m_pPlayerState[p]->m_PlayerOptions = po; } } diff --git a/stepmania/src/ScreenPlayerOptions.h b/stepmania/src/ScreenPlayerOptions.h index ce88089856..36ee6bebca 100644 --- a/stepmania/src/ScreenPlayerOptions.h +++ b/stepmania/src/ScreenPlayerOptions.h @@ -18,7 +18,7 @@ private: void GoToNextScreen(); void GoToPrevScreen(); - void UpdateDisqualified(); + void UpdateDisqualified( PlayerNumber pn ); bool m_bAcceptedChoices; bool m_bGoToOptions; diff --git a/stepmania/src/ScreenProfileOptions.cpp b/stepmania/src/ScreenProfileOptions.cpp index 73dc37d16e..b84e8a712a 100644 --- a/stepmania/src/ScreenProfileOptions.cpp +++ b/stepmania/src/ScreenProfileOptions.cpp @@ -9,6 +9,7 @@ #include "ScreenTextEntry.h" #include "ScreenPrompt.h" #include "VirtualKeyboard.h" +#include "GameState.h" enum { @@ -84,8 +85,12 @@ void ScreenProfileOptions::Init() SOUND->PlayMusic( THEME->GetPathS("ScreenMachineOptions","music") ); } -void ScreenProfileOptions::ImportOptions( int row ) +void ScreenProfileOptions::ImportOptions( int row, PlayerNumber pn ) { + // Only take action for the master player + if( pn != GAMESTATE->m_MasterPlayerNumber ) + return; + switch( row ) { case PO_PLAYER1: @@ -106,8 +111,12 @@ void ScreenProfileOptions::ImportOptions( int row ) } } -void ScreenProfileOptions::ExportOptions( int row ) +void ScreenProfileOptions::ExportOptions( int row, PlayerNumber pn ) { + // Only take action for the master player + if( pn != GAMESTATE->m_MasterPlayerNumber ) + return; + switch( row ) { case PO_PLAYER1: diff --git a/stepmania/src/ScreenProfileOptions.h b/stepmania/src/ScreenProfileOptions.h index 65ff1aeaf1..a3d17323fd 100644 --- a/stepmania/src/ScreenProfileOptions.h +++ b/stepmania/src/ScreenProfileOptions.h @@ -14,8 +14,8 @@ public: virtual void MenuStart( PlayerNumber pn, const InputEventType type ); private: - void ImportOptions( int row ); - void ExportOptions( int row ); + void ImportOptions( int row, PlayerNumber pn ); + void ExportOptions( int row, PlayerNumber pn ); void GoToNextScreen(); void GoToPrevScreen(); diff --git a/stepmania/src/ScreenSMOnlineLogin.cpp b/stepmania/src/ScreenSMOnlineLogin.cpp index 21a26f6b89..f53e61b572 100644 --- a/stepmania/src/ScreenSMOnlineLogin.cpp +++ b/stepmania/src/ScreenSMOnlineLogin.cpp @@ -57,8 +57,12 @@ void ScreenSMOnlineLogin::Init() } } -void ScreenSMOnlineLogin::ImportOptions( int row ) +void ScreenSMOnlineLogin::ImportOptions( int row, PlayerNumber pn ) { + // Only take action for the master player + if( pn != GAMESTATE->m_MasterPlayerNumber ) + return; + switch( row ) { case 0: @@ -79,8 +83,12 @@ void ScreenSMOnlineLogin::ImportOptions( int row ) } } -void ScreenSMOnlineLogin::ExportOptions( int row ) +void ScreenSMOnlineLogin::ExportOptions( int row, PlayerNumber pn ) { + // Only take action for the master player + if( pn != GAMESTATE->m_MasterPlayerNumber ) + return; + switch( row ) { case 0: @@ -105,7 +113,7 @@ void ScreenSMOnlineLogin::GoToPrevScreen() void ScreenSMOnlineLogin::GoToNextScreen() { for( unsigned r=0; rm_MasterPlayerNumber ); PREFSMAN->SaveGlobalPrefsToDisk(); FOREACH_EnabledPlayer(pn) { diff --git a/stepmania/src/ScreenSMOnlineLogin.h b/stepmania/src/ScreenSMOnlineLogin.h index 08237cc33e..1cbcc41ab0 100644 --- a/stepmania/src/ScreenSMOnlineLogin.h +++ b/stepmania/src/ScreenSMOnlineLogin.h @@ -13,8 +13,8 @@ public: void SendLogin(CString sPassword); private: - void ImportOptions( int row ); - void ExportOptions( int row ); + void ImportOptions( int row, PlayerNumber pn ); + void ExportOptions( int row, PlayerNumber pn ); void GoToNextScreen(); void GoToPrevScreen(); CString GetSelectedProfileID();