cap at 20 credits for locations with time cards so that players can't load the machine up with an unlimited number of credits

This commit is contained in:
Chris Danford
2007-06-04 21:13:20 +00:00
parent 041eb476f6
commit edc23dd5e1
4 changed files with 34 additions and 12 deletions
@@ -1396,6 +1396,7 @@ CreditsCardRemoved=CARD GONE
CreditsCardTestFailed=CARD WRITE ERROR
CreditsCardTooLate=CARD TOO LATE
CreditsCredits=CREDIT(S)
CreditsMax=(MAX)
CreditsFreePlay=FREE PLAY
CreditsInsertCard=INSERT CARD
CreditsLoadFailed=SIGNATURE FAILED
+5
View File
@@ -13,6 +13,11 @@
const int MAX_METER = 13;
const int MIN_METER = 1;
//
// Credits
//
const int MAX_NUM_CREDITS = 20;
/* This is just cached song data. Not all of it may actually be displayed
* in the radar. */
+9 -7
View File
@@ -24,6 +24,7 @@ namespace
LocalizedString CREDITS_CARD_REMOVED("ScreenSystemLayer","CreditsCardRemoved");
LocalizedString CREDITS_FREE_PLAY("ScreenSystemLayer","CreditsFreePlay");
LocalizedString CREDITS_CREDITS("ScreenSystemLayer","CreditsCredits");
LocalizedString CREDITS_MAX("ScreenSystemLayer","CreditsMax");
LocalizedString CREDITS_NOT_PRESENT("ScreenSystemLayer","CreditsNotPresent");
LocalizedString CREDITS_LOAD_FAILED("ScreenSystemLayer","CreditsLoadFailed");
LocalizedString CREDITS_LOADED_FROM_LAST_GOOD_APPEND("ScreenSystemLayer","CreditsLoadedFromLastGoodAppend");
@@ -49,6 +50,7 @@ namespace
const Profile* pProfile = PROFILEMAN->GetProfile( pn );
switch( mcs )
{
DEFAULT_FAIL( mcs );
case MemoryCardState_NoCard:
// this is a local machine profile
if( PROFILEMAN->LastLoadWasFromLastGood(pn) )
@@ -90,8 +92,6 @@ namespace
else
return CREDITS_CARD_NO_NAME.GetValue();
}
default:
FAIL_M( ssprintf("%i",mcs) );
}
}
else // bShowCreditsMessage
@@ -106,13 +106,15 @@ namespace
case CoinMode_Pay:
{
int Credits = GAMESTATE->m_iCoins / PREFSMAN->m_iCoinsPerCredit;
int Coins = GAMESTATE->m_iCoins % PREFSMAN->m_iCoinsPerCredit;
int iCredits = GAMESTATE->m_iCoins / PREFSMAN->m_iCoinsPerCredit;
int iCoins = GAMESTATE->m_iCoins % PREFSMAN->m_iCoinsPerCredit;
RString sCredits = CREDITS_CREDITS;
if( Credits > 0 || PREFSMAN->m_iCoinsPerCredit == 1 )
sCredits += ssprintf(" %d", Credits);
if( iCredits > 0 || PREFSMAN->m_iCoinsPerCredit == 1 )
sCredits += ssprintf(" %d", iCredits);
if( PREFSMAN->m_iCoinsPerCredit > 1 )
sCredits += ssprintf(" %d/%d", Coins, PREFSMAN->m_iCoinsPerCredit.Get() );
sCredits += ssprintf(" %d/%d", iCoins, PREFSMAN->m_iCoinsPerCredit.Get() );
if( iCredits >= MAX_NUM_CREDITS )
sCredits += " " + CREDITS_MAX.GetValue();
return sCredits;
}
case CoinMode_Free:
+19 -5
View File
@@ -1187,12 +1187,25 @@ void StepMania::InsertCoin( int iNum, bool bCountInBookkeeping )
LIGHTSMAN->PulseCoinCounter();
BOOKKEEPER->CoinInserted();
}
int iNumCoinsOld = GAMESTATE->m_iCoins;
GAMESTATE->m_iCoins += iNum;
int iCredits = GAMESTATE->m_iCoins / PREFSMAN->m_iCoinsPerCredit;
bool bMaxCredits = iCredits >= MAX_NUM_CREDITS;
if( bMaxCredits )
GAMESTATE->m_iCoins = MAX_NUM_CREDITS * PREFSMAN->m_iCoinsPerCredit;
LOG->Trace("%i coins inserted, %i needed to play", GAMESTATE->m_iCoins, PREFSMAN->m_iCoinsPerCredit.Get() );
SCREENMAN->PlayCoinSound();
if( iNumCoinsOld != GAMESTATE->m_iCoins )
SCREENMAN->PlayCoinSound();
else
SCREENMAN->PlayInvalidSound();
Message msg( "CoinInserted" );
msg.SetParam( "Coins", GAMESTATE->m_iCoins );
msg.SetParam( "Inserted", iNum );
// below params are unused
//msg.SetParam( "Coins", GAMESTATE->m_iCoins );
//msg.SetParam( "Inserted", iNum );
//msg.SetParam( "MaxCredits", bMaxCredits );
MESSAGEMAN->Broadcast( msg );
}
@@ -1207,8 +1220,9 @@ void StepMania::ClearCredits()
GAMESTATE->m_iCoins = 0;
SCREENMAN->PlayInvalidSound();
Message msg( "CoinInserted" );
msg.SetParam( "Coins", GAMESTATE->m_iCoins );
msg.SetParam( "Clear", true );
// below params are unused
//msg.SetParam( "Coins", GAMESTATE->m_iCoins );
//msg.SetParam( "Clear", true );
MESSAGEMAN->Broadcast( msg );
}