fix AutoJoin in free/home: join both players
This commit is contained in:
@@ -392,35 +392,48 @@ void GameState::UnjoinPlayer( PlayerNumber pn )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle an input that can join a player. Return true if the player joined. */
|
namespace
|
||||||
bool GameState::JoinInput( PlayerNumber pn )
|
|
||||||
{
|
{
|
||||||
if( !PlayersCanJoin() )
|
bool JoinInputInternal( PlayerNumber pn )
|
||||||
|
{
|
||||||
|
if( !GAMESTATE->PlayersCanJoin() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* If this side is already in, don't re-join. */
|
/* If this side is already in, don't re-join. */
|
||||||
if( m_bSideIsJoined[pn] )
|
if( GAMESTATE->m_bSideIsJoined[pn] )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* subtract coins */
|
/* subtract coins */
|
||||||
int iCoinsNeededToJoin = GetCoinsNeededToJoin();
|
int iCoinsNeededToJoin = GAMESTATE->GetCoinsNeededToJoin();
|
||||||
|
|
||||||
if( m_iCoins < iCoinsNeededToJoin )
|
if( GAMESTATE->m_iCoins < iCoinsNeededToJoin )
|
||||||
return false; // not enough coins
|
return false; // not enough coins
|
||||||
|
|
||||||
m_iCoins -= iCoinsNeededToJoin;
|
GAMESTATE->m_iCoins -= iCoinsNeededToJoin;
|
||||||
|
|
||||||
JoinPlayer( pn );
|
GAMESTATE->JoinPlayer( pn );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Handle an input that can join a player. Return true if the player joined. */
|
||||||
|
bool GameState::JoinInput( PlayerNumber pn )
|
||||||
|
{
|
||||||
|
/* In free play when AutoJoin is enabled, join all players on a single start press. */
|
||||||
|
if( GAMESTATE->GetCoinMode() != CoinMode_Pay && GAMESTATE->m_bAutoJoin.Get() )
|
||||||
|
return JoinPlayers();
|
||||||
|
else
|
||||||
|
return JoinInputInternal( pn );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Attempt to join all players, as if each player pressed Start. */
|
||||||
bool GameState::JoinPlayers()
|
bool GameState::JoinPlayers()
|
||||||
{
|
{
|
||||||
bool bJoined = false;
|
bool bJoined = false;
|
||||||
FOREACH_PlayerNumber( pn )
|
FOREACH_PlayerNumber( pn )
|
||||||
{
|
{
|
||||||
if( JoinInput(pn) )
|
if( JoinInputInternal(pn) )
|
||||||
bJoined = true;
|
bJoined = true;
|
||||||
}
|
}
|
||||||
return bJoined;
|
return bJoined;
|
||||||
|
|||||||
Reference in New Issue
Block a user