From edc23dd5e14b213d0cfbe716c3a6ab4d0604b869 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Mon, 4 Jun 2007 21:13:20 +0000 Subject: [PATCH] cap at 20 credits for locations with time cards so that players can't load the machine up with an unlimited number of credits --- stepmania/Themes/default/Languages/en.ini | 1 + stepmania/src/GameConstantsAndTypes.h | 5 +++++ stepmania/src/ScreenSystemLayer.cpp | 16 ++++++++------- stepmania/src/StepMania.cpp | 24 ++++++++++++++++++----- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/stepmania/Themes/default/Languages/en.ini b/stepmania/Themes/default/Languages/en.ini index 7490db2a4e..699bda3e5c 100644 --- a/stepmania/Themes/default/Languages/en.ini +++ b/stepmania/Themes/default/Languages/en.ini @@ -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 diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index 8b2743ad1a..04851a32b2 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -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. */ diff --git a/stepmania/src/ScreenSystemLayer.cpp b/stepmania/src/ScreenSystemLayer.cpp index 6ea60f0510..ff1553ea4b 100644 --- a/stepmania/src/ScreenSystemLayer.cpp +++ b/stepmania/src/ScreenSystemLayer.cpp @@ -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: diff --git a/stepmania/src/StepMania.cpp b/stepmania/src/StepMania.cpp index 218b6d27ad..9f37af2dfc 100644 --- a/stepmania/src/StepMania.cpp +++ b/stepmania/src/StepMania.cpp @@ -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 ); }