fix DelayedCreditsReconcile interaction with joint premium

This commit is contained in:
Chris Danford
2004-05-07 08:18:27 +00:00
parent 16d8574260
commit c4f8a6c15f
+14 -1
View File
@@ -235,6 +235,9 @@ int GetSidesRequiredToPlayStyle( Style style )
int GetCreditsRequiredToPlayStyle( Style style )
{
if( PREFSMAN->m_Premium == PrefsManager::JOINT_PREMIUM )
return 1;
switch( GAMEMAN->GetStyleDefForStyle(style)->m_StyleType )
{
case StyleDef::ONE_PLAYER_ONE_CREDIT:
@@ -288,8 +291,13 @@ bool ModeChoice::IsPlayable( CString *why ) const
int iCredits = GAMESTATE->m_iCoins / PREFSMAN->m_iCoinsPerCredit;
int iNumSidesPlusCredits = iNumSidesJoined + iCredits;
CLAMP( iNumSidesPlusCredits, 0, NUM_PLAYERS );
if( PREFSMAN->m_iCoinMode != COIN_PAY )
switch( PREFSMAN->m_iCoinMode )
{
case COIN_HOME:
case COIN_FREE:
iNumSidesPlusCredits = NUM_PLAYERS;
}
int iNumSidesRequired = GetSidesRequiredToPlayStyle(m_style);
int iNumCreditsRequired = GetCreditsRequiredToPlayStyle(m_style);
@@ -381,6 +389,11 @@ void ModeChoice::Apply( PlayerNumber pn ) const
// joined as a result of applying this option.
int iNumCreditsRequired = GetCreditsRequiredToPlayStyle(m_style);
int iNumCreditsPaid = GAMESTATE->GetNumSidesJoined();
// players other than the first joined for free
if( PREFSMAN->m_Premium == PrefsManager::JOINT_PREMIUM )
iNumCreditsPaid = 1;
int iNumCreditsOwed = iNumCreditsRequired - iNumCreditsPaid;
GAMESTATE->m_iCoins -= iNumCreditsOwed * PREFSMAN->m_iCoinsPerCredit;