fix DelayedCreditsReconcile interaction with joint premium
This commit is contained in:
@@ -235,6 +235,9 @@ int GetSidesRequiredToPlayStyle( Style style )
|
|||||||
|
|
||||||
int GetCreditsRequiredToPlayStyle( Style style )
|
int GetCreditsRequiredToPlayStyle( Style style )
|
||||||
{
|
{
|
||||||
|
if( PREFSMAN->m_Premium == PrefsManager::JOINT_PREMIUM )
|
||||||
|
return 1;
|
||||||
|
|
||||||
switch( GAMEMAN->GetStyleDefForStyle(style)->m_StyleType )
|
switch( GAMEMAN->GetStyleDefForStyle(style)->m_StyleType )
|
||||||
{
|
{
|
||||||
case StyleDef::ONE_PLAYER_ONE_CREDIT:
|
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 iCredits = GAMESTATE->m_iCoins / PREFSMAN->m_iCoinsPerCredit;
|
||||||
int iNumSidesPlusCredits = iNumSidesJoined + iCredits;
|
int iNumSidesPlusCredits = iNumSidesJoined + iCredits;
|
||||||
CLAMP( iNumSidesPlusCredits, 0, NUM_PLAYERS );
|
CLAMP( iNumSidesPlusCredits, 0, NUM_PLAYERS );
|
||||||
if( PREFSMAN->m_iCoinMode != COIN_PAY )
|
|
||||||
|
switch( PREFSMAN->m_iCoinMode )
|
||||||
|
{
|
||||||
|
case COIN_HOME:
|
||||||
|
case COIN_FREE:
|
||||||
iNumSidesPlusCredits = NUM_PLAYERS;
|
iNumSidesPlusCredits = NUM_PLAYERS;
|
||||||
|
}
|
||||||
|
|
||||||
int iNumSidesRequired = GetSidesRequiredToPlayStyle(m_style);
|
int iNumSidesRequired = GetSidesRequiredToPlayStyle(m_style);
|
||||||
int iNumCreditsRequired = GetCreditsRequiredToPlayStyle(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.
|
// joined as a result of applying this option.
|
||||||
int iNumCreditsRequired = GetCreditsRequiredToPlayStyle(m_style);
|
int iNumCreditsRequired = GetCreditsRequiredToPlayStyle(m_style);
|
||||||
int iNumCreditsPaid = GAMESTATE->GetNumSidesJoined();
|
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;
|
int iNumCreditsOwed = iNumCreditsRequired - iNumCreditsPaid;
|
||||||
GAMESTATE->m_iCoins -= iNumCreditsOwed * PREFSMAN->m_iCoinsPerCredit;
|
GAMESTATE->m_iCoins -= iNumCreditsOwed * PREFSMAN->m_iCoinsPerCredit;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user