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;
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
-2
View File
@@ -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,
+2 -2
View File
@@ -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( )
{
+2 -2
View File
@@ -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();
+6 -3
View File
@@ -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 );
}
+3 -2
View File
@@ -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;
+8 -19
View File
@@ -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 )
+2 -3
View File
@@ -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();
+15 -15
View File
@@ -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;
}
}
+1 -1
View File
@@ -18,7 +18,7 @@ private:
void GoToNextScreen();
void GoToPrevScreen();
void UpdateDisqualified();
void UpdateDisqualified( PlayerNumber pn );
bool m_bAcceptedChoices;
bool m_bGoToOptions;
+11 -2
View File
@@ -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:
+2 -2
View File
@@ -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();
+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 )
{
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)
{
+2 -2
View File
@@ -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();