export and import separately for each player
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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( )
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -151,7 +151,8 @@ void ScreenOptions::InitMenu( InputMode im, const vector<OptionRowDefinition> &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; r<m_Rows.size(); r++ ) // foreach row
|
||||
this->ExportOptions(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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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; r<m_Rows.size(); r++ )
|
||||
this->ImportOptions( 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; r<OptionRowHandlers.size(); r++ )
|
||||
ScreenOptionsMaster::ExportOptions( r );
|
||||
ScreenOptionsMaster::ExportOptions( r, pn );
|
||||
|
||||
FOREACH_HumanPlayer( p )
|
||||
{
|
||||
@@ -201,7 +201,7 @@ void ScreenPlayerOptions::UpdateDisqualified()
|
||||
m_sprDisqualify[p]->SetHidden( !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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ private:
|
||||
void GoToNextScreen();
|
||||
void GoToPrevScreen();
|
||||
|
||||
void UpdateDisqualified();
|
||||
void UpdateDisqualified( PlayerNumber pn );
|
||||
|
||||
bool m_bAcceptedChoices;
|
||||
bool m_bGoToOptions;
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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; r<m_Rows.size(); r++ )
|
||||
ExportOptions( r );
|
||||
ExportOptions( r, GAMESTATE->m_MasterPlayerNumber );
|
||||
PREFSMAN->SaveGlobalPrefsToDisk();
|
||||
FOREACH_EnabledPlayer(pn)
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user