export and import separately for each player

This commit is contained in:
Chris Danford
2005-03-13 00:59:03 +00:00
parent 8415b4466d
commit 4b824bbe47
14 changed files with 71 additions and 77 deletions
+6 -19
View File
@@ -683,7 +683,8 @@ void OptionRow::Reload()
return; return;
if( m_RowDef.m_bExportOnChange ) if( m_RowDef.m_bExportOnChange )
ExportOptions(); FOREACH_OptionsPlayer( p )
ExportOptions( p );
m_pHand->Reload( m_RowDef ); m_pHand->Reload( m_RowDef );
ASSERT( !m_RowDef.choices.empty() ); ASSERT( !m_RowDef.choices.empty() );
@@ -691,7 +692,8 @@ void OptionRow::Reload()
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
m_vbSelected[p].resize( m_RowDef.choices.size(), false ); m_vbSelected[p].resize( m_RowDef.choices.size(), false );
ImportOptions(); FOREACH_OptionsPlayer( p )
ImportOptions( p );
switch( m_RowDef.selectType ) switch( m_RowDef.selectType )
{ {
@@ -708,7 +710,8 @@ void OptionRow::Reload()
} }
if( m_RowDef.m_bExportOnChange ) if( m_RowDef.m_bExportOnChange )
ExportOptions(); FOREACH_OptionsPlayer( p )
ExportOptions( p );
UpdateEnabledDisabled(); UpdateEnabledDisabled();
UpdateText(); UpdateText();
@@ -767,12 +770,6 @@ void OptionRow::ImportOptions( PlayerNumber pn )
VerifySelected( m_RowDef.selectType, m_vbSelected[pn], m_RowDef.name ); VerifySelected( m_RowDef.selectType, m_vbSelected[pn], m_RowDef.name );
} }
void OptionRow::ImportOptions()
{
FOREACH_OptionsPlayer( p )
ImportOptions( p );
}
int OptionRow::ExportOptions( PlayerNumber pn ) int OptionRow::ExportOptions( PlayerNumber pn )
{ {
if( m_pHand == NULL ) if( m_pHand == NULL )
@@ -791,16 +788,6 @@ int OptionRow::ExportOptions( PlayerNumber pn )
return iChangeMask; return iChangeMask;
} }
int OptionRow::ExportOptions()
{
int iChangeMask = 0;
FOREACH_OptionsPlayer( p )
iChangeMask |= ExportOptions( p );
return iChangeMask;
}
/* /*
* (c) 2001-2004 Chris Danford * (c) 2001-2004 Chris Danford
-2
View File
@@ -80,9 +80,7 @@ public:
void LoadOptionIcon( PlayerNumber pn, const CString &sText ); void LoadOptionIcon( PlayerNumber pn, const CString &sText );
void ImportOptions( PlayerNumber pn ); void ImportOptions( PlayerNumber pn );
void ImportOptions();
int ExportOptions( PlayerNumber pn ); int ExportOptions( PlayerNumber pn );
int ExportOptions();
void AfterImportOptions( void AfterImportOptions(
const CString &sTitle, const CString &sTitle,
+2 -2
View File
@@ -156,8 +156,8 @@ void ScreenNetworkOptions::MenuStart( PlayerNumber pn, const InputEventType type
#endif #endif
} }
void ScreenNetworkOptions::ImportOptions( int row ) { } void ScreenNetworkOptions::ImportOptions( int row, PlayerNumber pn ) { }
void ScreenNetworkOptions::ExportOptions( int row ) { } void ScreenNetworkOptions::ExportOptions( int row, PlayerNumber pn ) { }
void ScreenNetworkOptions::UpdateConnectStatus( ) void ScreenNetworkOptions::UpdateConnectStatus( )
{ {
+2 -2
View File
@@ -14,8 +14,8 @@ public:
virtual void MenuStart( PlayerNumber pn, const InputEventType type ); virtual void MenuStart( PlayerNumber pn, const InputEventType type );
private: private:
void ImportOptions( int row ); void ImportOptions( int row, PlayerNumber pn );
void ExportOptions( int row ); void ExportOptions( int row, PlayerNumber pn );
void GoToNextScreen(); void GoToNextScreen();
void GoToPrevScreen(); void GoToPrevScreen();
+6 -3
View File
@@ -151,7 +151,8 @@ void ScreenOptions::InitMenu( InputMode im, const vector<OptionRowDefinition> &v
row.LoadMetrics( OPTION_ROW_TYPE ); row.LoadMetrics( OPTION_ROW_TYPE );
row.LoadNormal( vDefs[r], vHands[r], bFirstRowGoesDown ); 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()) ); CHECKPOINT_M( ssprintf("row %i: %s", r, row.GetRowDef().name.c_str()) );
@@ -524,7 +525,8 @@ void ScreenOptions::HandleScreenMessage( const ScreenMessage SM )
break; break;
case SM_GoToNextScreen: case SM_GoToNextScreen:
for( unsigned r=0; r<m_Rows.size(); r++ ) // foreach row for( unsigned r=0; r<m_Rows.size(); r++ ) // foreach row
this->ExportOptions(r); FOREACH_HumanPlayer( p )
this->ExportOptions( r, p );
this->GoToNextScreen(); this->GoToNextScreen();
break; break;
case SM_BeginFadingOut: case SM_BeginFadingOut:
@@ -983,7 +985,8 @@ void ScreenOptions::ChangeValueInRow( PlayerNumber pn, int iDelta, bool Repeat )
m_SoundChangeCol.Play(); m_SoundChangeCol.Play();
if( row.GetRowDef().m_bExportOnChange ) if( row.GetRowDef().m_bExportOnChange )
ExportOptions( iCurRow ); FOREACH_HumanPlayer( p )
ExportOptions( iCurRow, p );
} }
+3 -2
View File
@@ -32,8 +32,9 @@ public:
virtual void HandleScreenMessage( const ScreenMessage SM ); virtual void HandleScreenMessage( const ScreenMessage SM );
protected: protected:
virtual void ImportOptions( int row ) = 0; virtual void ImportOptions( int row, PlayerNumber pn ) = 0;
virtual void ExportOptions( int row ) = 0; virtual void ExportOptions( int row, PlayerNumber pn ) = 0;
void InitOptionsText(); void InitOptionsText();
void GetWidthXY( PlayerNumber pn, int iRow, int iChoiceOnRow, int &iWidthOut, int &iXOut, int &iYOut ); void GetWidthXY( PlayerNumber pn, int iRow, int iChoiceOnRow, int &iWidthOut, int &iXOut, int &iYOut );
CString GetExplanationText( int row ) const; CString GetExplanationText( int row ) const;
+6 -17
View File
@@ -122,29 +122,17 @@ void ScreenOptionsMaster::Update( float fDelta )
ScreenOptions::Update( 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]; OptionRow &row = *m_Rows[r];
row.ImportOptions();
}
/* 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 ); row.ImportOptions( pn );
} }
}
void ScreenOptionsMaster::ExportOptions( int r ) void ScreenOptionsMaster::ExportOptions( int r, PlayerNumber pn )
{ {
OptionRow &row = *m_Rows[r]; OptionRow &row = *m_Rows[r];
m_iChangeMask |= row.ExportOptions(); m_iChangeMask |= row.ExportOptions( pn );
} }
void ScreenOptionsMaster::BeginFadingOut() void ScreenOptionsMaster::BeginFadingOut()
@@ -252,7 +240,8 @@ void ScreenOptionsMaster::HandleScreenMessage( const ScreenMessage SM )
{ {
CHECKPOINT_M( ssprintf("%i/%i", r, int(OptionRowHandlers.size())) ); CHECKPOINT_M( ssprintf("%i/%i", r, int(OptionRowHandlers.size())) );
ExportOptions( r ); FOREACH_HumanPlayer( p )
ExportOptions( r, p );
} }
if( m_iChangeMask & OPT_APPLY_ASPECT_RATIO ) if( m_iChangeMask & OPT_APPLY_ASPECT_RATIO )
+2 -3
View File
@@ -23,9 +23,8 @@ protected:
protected: protected:
void HandleScreenMessage( const ScreenMessage SM ); void HandleScreenMessage( const ScreenMessage SM );
virtual void ImportOptions( int row ); virtual void ImportOptions( int row, PlayerNumber pn );
virtual void ExportOptions( int row ); virtual void ExportOptions( int row, PlayerNumber pn );
virtual void ImportOptionsForPlayer( PlayerNumber pn ); // used by ScreenPlayerOptions
virtual void BeginFadingOut(); virtual void BeginFadingOut();
virtual void GoToNextScreen(); virtual void GoToNextScreen();
+15 -15
View File
@@ -58,14 +58,15 @@ void ScreenPlayerOptions::Init()
SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("player options intro") ); SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("player options intro") );
FOREACH_HumanPlayer( pn ) FOREACH_HumanPlayer( p )
{ {
m_sprCancelAll[pn].LoadAndSetName( "ScreenPlayerOptions", ssprintf("CancelAllP%d",pn+1) ); m_sprCancelAll[p].LoadAndSetName( "ScreenPlayerOptions", ssprintf("CancelAllP%d",p+1) );
SET_XY_AND_ON_COMMAND( m_sprCancelAll[pn] ); SET_XY_AND_ON_COMMAND( m_sprCancelAll[p] );
this->AddChild( m_sprCancelAll[pn] ); 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" ); COMMAND( m_sprCancelAll[pn], "Show" );
this->ImportOptionsForPlayer( pn ); for( unsigned r=0; r<m_Rows.size(); r++ )
this->ImportOptions( r, pn );
this->PositionUnderlines(); this->PositionUnderlines();
this->UpdateDisqualified(); this->UpdateDisqualified( pn );
} }
ScreenOptionsMaster::Input( DeviceI, type, GameI, MenuI, StyleI ); ScreenOptionsMaster::Input( DeviceI, type, GameI, MenuI, StyleI );
// UGLY: Update m_Disqualified whenever Start is pressed // UGLY: Update m_Disqualified whenever Start is pressed
if( MenuI.IsValid() && MenuI.button == MENU_BUTTON_START ) if( MenuI.IsValid() && MenuI.button == MENU_BUTTON_START )
UpdateDisqualified(); FOREACH_HumanPlayer( p )
UpdateDisqualified( p );
} }
void ScreenPlayerOptions::HandleScreenMessage( const ScreenMessage SM ) void ScreenPlayerOptions::HandleScreenMessage( const ScreenMessage SM )
@@ -182,17 +185,14 @@ void ScreenPlayerOptions::HandleScreenMessage( const ScreenMessage SM )
ScreenOptionsMaster::HandleScreenMessage( SM ); ScreenOptionsMaster::HandleScreenMessage( SM );
} }
void ScreenPlayerOptions::UpdateDisqualified() void ScreenPlayerOptions::UpdateDisqualified( PlayerNumber pn )
{ {
// save current player options // save current player options
PlayerOptions po[NUM_PLAYERS]; PlayerOptions po = GAMESTATE->m_pPlayerState[pn]->m_PlayerOptions;
FOREACH_PlayerNumber( p )
po[p] = GAMESTATE->m_pPlayerState[p]->m_PlayerOptions;
// export the currently selection options, which will fill GAMESTATE->m_PlayerOptions // export the currently selection options, which will fill GAMESTATE->m_PlayerOptions
for( unsigned r=0; r<OptionRowHandlers.size(); r++ ) for( unsigned r=0; r<OptionRowHandlers.size(); r++ )
ScreenOptionsMaster::ExportOptions( r ); ScreenOptionsMaster::ExportOptions( r, pn );
FOREACH_HumanPlayer( p ) FOREACH_HumanPlayer( p )
{ {
@@ -201,7 +201,7 @@ void ScreenPlayerOptions::UpdateDisqualified()
m_sprDisqualify[p]->SetHidden( !bIsHandicap ); m_sprDisqualify[p]->SetHidden( !bIsHandicap );
// restore previous player options in case the user escapes back after this // 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;
} }
} }
+1 -1
View File
@@ -18,7 +18,7 @@ private:
void GoToNextScreen(); void GoToNextScreen();
void GoToPrevScreen(); void GoToPrevScreen();
void UpdateDisqualified(); void UpdateDisqualified( PlayerNumber pn );
bool m_bAcceptedChoices; bool m_bAcceptedChoices;
bool m_bGoToOptions; bool m_bGoToOptions;
+11 -2
View File
@@ -9,6 +9,7 @@
#include "ScreenTextEntry.h" #include "ScreenTextEntry.h"
#include "ScreenPrompt.h" #include "ScreenPrompt.h"
#include "VirtualKeyboard.h" #include "VirtualKeyboard.h"
#include "GameState.h"
enum { enum {
@@ -84,8 +85,12 @@ void ScreenProfileOptions::Init()
SOUND->PlayMusic( THEME->GetPathS("ScreenMachineOptions","music") ); 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 ) switch( row )
{ {
case PO_PLAYER1: 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 ) switch( row )
{ {
case PO_PLAYER1: case PO_PLAYER1:
+2 -2
View File
@@ -14,8 +14,8 @@ public:
virtual void MenuStart( PlayerNumber pn, const InputEventType type ); virtual void MenuStart( PlayerNumber pn, const InputEventType type );
private: private:
void ImportOptions( int row ); void ImportOptions( int row, PlayerNumber pn );
void ExportOptions( int row ); void ExportOptions( int row, PlayerNumber pn );
void GoToNextScreen(); void GoToNextScreen();
void GoToPrevScreen(); void GoToPrevScreen();
+11 -3
View File
@@ -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 ) switch( row )
{ {
case 0: 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 ) switch( row )
{ {
case 0: case 0:
@@ -105,7 +113,7 @@ void ScreenSMOnlineLogin::GoToPrevScreen()
void ScreenSMOnlineLogin::GoToNextScreen() void ScreenSMOnlineLogin::GoToNextScreen()
{ {
for( unsigned r=0; r<m_Rows.size(); r++ ) for( unsigned r=0; r<m_Rows.size(); r++ )
ExportOptions( r ); ExportOptions( r, GAMESTATE->m_MasterPlayerNumber );
PREFSMAN->SaveGlobalPrefsToDisk(); PREFSMAN->SaveGlobalPrefsToDisk();
FOREACH_EnabledPlayer(pn) FOREACH_EnabledPlayer(pn)
{ {
+2 -2
View File
@@ -13,8 +13,8 @@ public:
void SendLogin(CString sPassword); void SendLogin(CString sPassword);
private: private:
void ImportOptions( int row ); void ImportOptions( int row, PlayerNumber pn );
void ExportOptions( int row ); void ExportOptions( int row, PlayerNumber pn );
void GoToNextScreen(); void GoToNextScreen();
void GoToPrevScreen(); void GoToPrevScreen();
CString GetSelectedProfileID(); CString GetSelectedProfileID();