From a266e00c93ea2d841c6c7f65af7e73b40623132d Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Wed, 9 Jun 2004 08:14:21 +0000 Subject: [PATCH] force particular Premium and CoinMode values if bEventMode --- stepmania/src/GameState.cpp | 2 +- stepmania/src/ModeChoice.cpp | 8 ++++---- stepmania/src/PrefsManager.cpp | 18 ++++++++++++++++++ stepmania/src/PrefsManager.h | 12 +++++++++--- stepmania/src/Screen.cpp | 9 +++++---- stepmania/src/ScreenAttract.cpp | 2 +- stepmania/src/ScreenManager.cpp | 2 +- stepmania/src/ScreenSelectMode.cpp | 4 ++-- stepmania/src/ScreenSelectStyle.cpp | 2 +- stepmania/src/ScreenTitleMenu.cpp | 18 +++++++++--------- 10 files changed, 51 insertions(+), 26 deletions(-) diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index b12e70c5e2..1ae19adb8f 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -751,7 +751,7 @@ bool GameState::PlayersCanJoin() const bool GameState::EnoughCreditsToJoin() const { - switch( PREFSMAN->m_iCoinMode ) + switch( PREFSMAN->GetCoinMode() ) { case COIN_PAY: return GAMESTATE->m_iCoins >= PREFSMAN->m_iCoinsPerCredit; diff --git a/stepmania/src/ModeChoice.cpp b/stepmania/src/ModeChoice.cpp index b45b3a9b1c..6aa3c7e0f4 100644 --- a/stepmania/src/ModeChoice.cpp +++ b/stepmania/src/ModeChoice.cpp @@ -224,7 +224,7 @@ int GetNumCreditsPaid() int iNumCreditsPaid = GAMESTATE->GetNumSidesJoined(); // players other than the first joined for free - if( PREFSMAN->m_Premium == PrefsManager::JOINT_PREMIUM ) + if( PREFSMAN->GetPremium() == PrefsManager::JOINT_PREMIUM ) iNumCreditsPaid = min( iNumCreditsPaid, 1 ); return iNumCreditsPaid; @@ -233,7 +233,7 @@ int GetNumCreditsPaid() int GetCreditsRequiredToPlayStyle( Style style ) { - if( PREFSMAN->m_Premium == PrefsManager::JOINT_PREMIUM ) + if( PREFSMAN->GetPremium() == PrefsManager::JOINT_PREMIUM ) return 1; switch( GAMEMAN->GetStyleDefForStyle(style)->m_StyleType ) @@ -243,7 +243,7 @@ int GetCreditsRequiredToPlayStyle( Style style ) case StyleDef::TWO_PLAYERS_TWO_CREDITS: return 2; case StyleDef::ONE_PLAYER_TWO_CREDITS: - return (PREFSMAN->m_Premium == PrefsManager::DOUBLES_PREMIUM) ? 1 : 2; + return (PREFSMAN->GetPremium() == PrefsManager::DOUBLES_PREMIUM) ? 1 : 2; default: ASSERT(0); return 1; @@ -289,7 +289,7 @@ bool ModeChoice::IsPlayable( CString *why ) const const int iNumCreditsPaid = GetNumCreditsPaid(); const int iNumCreditsRequired = GetCreditsRequiredToPlayStyle(m_style); - switch( PREFSMAN->m_iCoinMode ) + switch( PREFSMAN->GetCoinMode() ) { case COIN_HOME: case COIN_FREE: diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index 0d304e7d8d..63e72874bc 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -8,6 +8,7 @@ #include "RageSoundReader_Resample.h" /* for ResampleQuality */ #include "RageFile.h" #include "ProductInfo.h" +#include "GameConstantsAndTypes.h" #define STEPMANIA_INI_PATH "Data/StepMania.ini" #define STATIC_INI_PATH "Data/Static.ini" @@ -812,6 +813,23 @@ void PrefsManager::ResetToFactoryDefaults() m_bFirstRun = false; } +int PrefsManager::GetCoinMode() +{ + if(m_bEventMode) + return COIN_FREE; + else + return m_iCoinMode; +} + +PrefsManager::Premium PrefsManager::GetPremium() +{ + if(m_bEventMode) + return NO_PREMIUM; + else + return m_Premium; +} + + /* * (c) 2001-2004 Chris Danford, Chris Gomez * All rights reserved. diff --git a/stepmania/src/PrefsManager.h b/stepmania/src/PrefsManager.h index 128719d971..fab00d5a17 100644 --- a/stepmania/src/PrefsManager.h +++ b/stepmania/src/PrefsManager.h @@ -49,8 +49,6 @@ public: bool m_bOnlyDedicatedMenuButtons; bool m_bMenuTimer; bool m_bShowDanger; - int m_iNumArcadeStages; - bool m_bEventMode; float m_fJudgeWindowScale; float m_fJudgeWindowSecondsMarvelous; @@ -139,10 +137,18 @@ public: int m_iMusicWheelSwitchSpeed; bool m_bEasterEggs; int m_iMarvelousTiming; - int m_iCoinMode; + bool m_bEventMode; int m_iCoinsPerCredit; + int m_iNumArcadeStages; + + // These options have weird interactions depending on m_bEventMode, + // so wrap them. enum Premium { NO_PREMIUM, DOUBLES_PREMIUM, JOINT_PREMIUM }; + int m_iCoinMode; Premium m_Premium; + int GetCoinMode(); + Premium GetPremium(); + bool m_bDelayedCreditsReconcile; bool m_bPickExtraStage; bool m_bComboContinuesBetweenSongs; diff --git a/stepmania/src/Screen.cpp b/stepmania/src/Screen.cpp index 09b0827497..ddc5fa1cec 100644 --- a/stepmania/src/Screen.cpp +++ b/stepmania/src/Screen.cpp @@ -160,12 +160,13 @@ bool Screen::ChangeCoinModeInput( const DeviceInput& DeviceI, const InputEventTy return false; if( DeviceI.device == DEVICE_KEYBOARD && DeviceI.button == SDLK_F3 ) { - (int&)PREFSMAN->m_iCoinMode = (PREFSMAN->m_iCoinMode+1) % NUM_COIN_MODES; + PREFSMAN->m_iCoinMode++; + wrap( PREFSMAN->m_iCoinMode, NUM_COIN_MODES ); /* ResetGame(); This causes problems on ScreenIntroMovie, which results in the movie being restarted and/or becoming out-of-synch -- Miryokuteki */ - CString sMessage = CoinModeToString( (CoinMode)PREFSMAN->m_iCoinMode ); + CString sMessage = CoinModeToString( (CoinMode)PREFSMAN->GetCoinMode() ); sMessage.MakeUpper(); sMessage = "Coin Mode: " + sMessage; SCREENMAN->RefreshCreditsMessages(); @@ -188,11 +189,11 @@ bool Screen::JoinInput( const DeviceInput& DeviceI, const InputEventType type, c /* subtract coins */ int iCoinsToCharge = 0; - if( PREFSMAN->m_iCoinMode == COIN_PAY ) + if( PREFSMAN->GetCoinMode() == COIN_PAY ) iCoinsToCharge = PREFSMAN->m_iCoinsPerCredit; // If joint premium don't take away a credit for the 2nd join. - if( PREFSMAN->m_Premium == PrefsManager::JOINT_PREMIUM && + if( PREFSMAN->GetPremium() == PrefsManager::JOINT_PREMIUM && GAMESTATE->GetNumSidesJoined() == 1 ) iCoinsToCharge = 0; diff --git a/stepmania/src/ScreenAttract.cpp b/stepmania/src/ScreenAttract.cpp index a7958b4792..e506460b69 100644 --- a/stepmania/src/ScreenAttract.cpp +++ b/stepmania/src/ScreenAttract.cpp @@ -91,7 +91,7 @@ void ScreenAttract::AttractInput( const DeviceInput& DeviceI, const InputEventTy case MENU_BUTTON_START: case MENU_BUTTON_BACK: case MENU_BUTTON_COIN: - switch( PREFSMAN->m_iCoinMode ) + switch( PREFSMAN->GetCoinMode() ) { case COIN_PAY: LOG->Trace("ScreenAttract::AttractInput: COIN_PAY (%i/%i)", GAMESTATE->m_iCoins, PREFSMAN->m_iCoinsPerCredit ); diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index 0db82dd31c..b649f40e9d 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -215,7 +215,7 @@ void ScreenSystemLayer::RefreshCreditsMessages() } else { - switch( PREFSMAN->m_iCoinMode ) + switch( PREFSMAN->GetCoinMode() ) { case COIN_HOME: if( GAMESTATE->PlayersCanJoin() ) diff --git a/stepmania/src/ScreenSelectMode.cpp b/stepmania/src/ScreenSelectMode.cpp index 054d116fb8..9849af35c4 100644 --- a/stepmania/src/ScreenSelectMode.cpp +++ b/stepmania/src/ScreenSelectMode.cpp @@ -197,9 +197,9 @@ void ScreenSelectMode::UpdateSelectableChoices() (mc.m_style == STYLE_INVALID) ? 1 : 1; - if( PREFSMAN->m_Premium!=PrefsManager::JOINT_PREMIUM || + if( PREFSMAN->GetPremium()!=PrefsManager::JOINT_PREMIUM || ( - (PREFSMAN->m_Premium==PrefsManager::JOINT_PREMIUM) && + (PREFSMAN->GetPremium()==PrefsManager::JOINT_PREMIUM) && ( (INCLUDE_DOUBLE_IN_JP == 1 && (GAMESTATE->GetNumSidesJoined() == SidesJoinedToPlay)) || ( diff --git a/stepmania/src/ScreenSelectStyle.cpp b/stepmania/src/ScreenSelectStyle.cpp index a3b9077493..4452d9f210 100644 --- a/stepmania/src/ScreenSelectStyle.cpp +++ b/stepmania/src/ScreenSelectStyle.cpp @@ -100,7 +100,7 @@ ScreenSelectStyle::ScreenSelectStyle( CString sClassName ) : ScreenSelect( sClas m_sprPremium.SetName( "Premium" ); - switch( PREFSMAN->m_Premium ) + switch( PREFSMAN->GetPremium() ) { case PrefsManager::DOUBLES_PREMIUM: m_sprPremium.Load( THEME->GetPathToG(m_sName + " doubles premium") ); diff --git a/stepmania/src/ScreenTitleMenu.cpp b/stepmania/src/ScreenTitleMenu.cpp index 7d9706eb01..32bfa1a3d4 100644 --- a/stepmania/src/ScreenTitleMenu.cpp +++ b/stepmania/src/ScreenTitleMenu.cpp @@ -55,7 +55,7 @@ ScreenTitleMenu::ScreenTitleMenu( CString sClassName ) : ScreenSelect( sClassNam // Don't show screen title menu (says "Press Start") // if there are 0 credits and inserted and CoinMode is pay. - if( PREFSMAN->m_iCoinMode == COIN_PAY && + if( PREFSMAN->GetCoinMode() == COIN_PAY && GAMESTATE->m_iCoins < PREFSMAN->m_iCoinsPerCredit ) { SCREENMAN->SetNewScreen( THEME->GetMetric("Common","InitialScreen") ); @@ -72,12 +72,12 @@ ScreenTitleMenu::ScreenTitleMenu( CString sClassName ) : ScreenSelect( sClassNam m_sprLogo.Load( THEME->GetPathToG(ssprintf("ScreenLogo %s",GAMESTATE->GetCurrentGameDef()->m_szName)) ); - m_sprLogo.Command( PREFSMAN->m_iCoinMode==COIN_HOME ? LOGO_HOME_ON_COMMAND : LOGO_ON_COMMAND ); + m_sprLogo.Command( PREFSMAN->GetCoinMode()==COIN_HOME ? LOGO_HOME_ON_COMMAND : LOGO_ON_COMMAND ); this->AddChild( &m_sprLogo ); - if( PREFSMAN->m_iCoinMode != COIN_HOME ) + if( PREFSMAN->GetCoinMode() != COIN_HOME ) { - switch( PREFSMAN->m_Premium ) + switch( PREFSMAN->GetPremium() ) { case PrefsManager::DOUBLES_PREMIUM: m_Premium.LoadFromAniDir( THEME->GetPathToB("ScreenTitleMenu doubles premium") ); @@ -113,19 +113,19 @@ ScreenTitleMenu::ScreenTitleMenu( CString sClassName ) : ScreenSelect( sClassNam m_textMaxStages.SetText( sText ); this->AddChild( &m_textMaxStages ); - CString sCoinMode = CoinModeToString((CoinMode)PREFSMAN->m_iCoinMode); + CString sCoinMode = CoinModeToString((CoinMode)PREFSMAN->GetCoinMode()); m_CoinMode.LoadFromAniDir( THEME->GetPathToB("ScreenTitleMenu "+sCoinMode) ); this->AddChild( &m_CoinMode ); m_textHelp.LoadFromFont( THEME->GetPathToF("ScreenTitleMenu help") ); - m_textHelp.SetText( HELP_TEXT((CoinMode)PREFSMAN->m_iCoinMode) ); + m_textHelp.SetText( HELP_TEXT((CoinMode)PREFSMAN->GetCoinMode()) ); m_textHelp.SetXY( HELP_X, HELP_Y ); m_textHelp.SetZoom( 0.5f ); m_textHelp.SetEffectDiffuseBlink(); m_textHelp.SetShadowLength( 2 ); this->AddChild( &m_textHelp ); - switch( PREFSMAN->m_iCoinMode ) + switch( PREFSMAN->GetCoinMode() ) { case COIN_HOME: { @@ -195,7 +195,7 @@ void ScreenTitleMenu::UpdateSelectableChoices() void ScreenTitleMenu::MoveCursor( bool up ) { - if( PREFSMAN->m_iCoinMode != COIN_HOME ) + if( PREFSMAN->GetCoinMode() != COIN_HOME ) return; // if( m_BeginOut.IsTransitioning() ) // return; @@ -308,7 +308,7 @@ void ScreenTitleMenu::Update( float fDelta ) { // don't time out on this screen is coin mode is pay. // If we're here, then there's a credit in the machine. - if( PREFSMAN->m_iCoinMode == COIN_PAY ) + if( PREFSMAN->GetCoinMode() == COIN_PAY ) ; // do nothing else {