From e386583dc8776153f9dd068de571498505696d94 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Tue, 21 Nov 2006 04:54:50 +0000 Subject: [PATCH] High-level preferences that pull in other dependencies should be moved out of PrefsManager; add GamePreferences for when we don't have a convenient place to put it. --- stepmania/src/GamePreferences.cpp | 32 ++++++++++++++++++++++++ stepmania/src/GamePreferences.h | 37 ++++++++++++++++++++++++++++ stepmania/src/GameState.cpp | 5 ++-- stepmania/src/PrefsManager.cpp | 3 --- stepmania/src/PrefsManager.h | 5 ---- stepmania/src/ScreenDebugOverlay.cpp | 7 +++--- stepmania/src/ScreenTitleMenu.cpp | 6 ++--- 7 files changed, 79 insertions(+), 16 deletions(-) create mode 100644 stepmania/src/GamePreferences.cpp create mode 100644 stepmania/src/GamePreferences.h diff --git a/stepmania/src/GamePreferences.cpp b/stepmania/src/GamePreferences.cpp new file mode 100644 index 0000000000..675fd12f95 --- /dev/null +++ b/stepmania/src/GamePreferences.cpp @@ -0,0 +1,32 @@ +#include "global.h" +#include "GamePreferences.h" + +// This options has weird interactions depending on m_bEventMode; +// use GameState::GetCoinMode(). +Preference GamePreferences::m_CoinMode( "CoinMode", COIN_MODE_HOME ); + + +/* + * (c) 2001-2004 Chris Danford, Chris Gomez + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, and/or sell copies of the Software, and to permit persons to + * whom the Software is furnished to do so, provided that the above + * copyright notice(s) and this permission notice appear in all copies of + * the Software and that both the above copyright notice(s) and this + * permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT + * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ diff --git a/stepmania/src/GamePreferences.h b/stepmania/src/GamePreferences.h new file mode 100644 index 0000000000..d4df434316 --- /dev/null +++ b/stepmania/src/GamePreferences.h @@ -0,0 +1,37 @@ +#ifndef GAME_PREFERENCES_H +#define GAME_PREFERENCES_H + +#include "Preference.h" +#include "GameConstantsAndTypes.h" + +namespace GamePreferences +{ + extern Preference m_CoinMode; +}; + +#endif + +/* + * (c) 2001-2004 Chris Danford, Chris Gomez + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, and/or sell copies of the Software, and to permit persons to + * whom the Software is furnished to do so, provided that the above + * copyright notice(s) and this permission notice appear in all copies of + * the Software and that both the above copyright notice(s) and this + * permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT + * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index 03df1457bf..d472ac5f7a 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -2,6 +2,7 @@ #include "GameState.h" #include "GameManager.h" #include "PrefsManager.h" +#include "GamePreferences.h" #include "song.h" #include "Course.h" #include "RageLog.h" @@ -1760,10 +1761,10 @@ bool GameState::IsEventMode() const CoinMode GameState::GetCoinMode() const { - if( IsEventMode() && PREFSMAN->m_CoinMode == COIN_MODE_PAY ) + if( IsEventMode() && GamePreferences::m_CoinMode == COIN_MODE_PAY ) return COIN_MODE_FREE; else - return PREFSMAN->m_CoinMode; + return GamePreferences::m_CoinMode; } Premium GameState::GetPremium() const diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index a28d3d273a..fb0723814a 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -194,11 +194,8 @@ PrefsManager::PrefsManager() : m_bEventMode ( "EventMode", false ), m_iCoinsPerCredit ( "CoinsPerCredit", 1 ), m_iSongsPerPlay ( "SongsPerPlay", 3, ValidateSongsPerPlay ), - - m_CoinMode ( "CoinMode", COIN_MODE_HOME ), m_bDelayedCreditsReconcile ( "DelayedCreditsReconcile", false ), m_bPickExtraStage ( "PickExtraStage", false ), - m_bComboContinuesBetweenSongs ( "ComboContinuesBetweenSongs", false ), m_ShowSongOptions ( "ShowSongOptions", Maybe_YES ), m_bDancePointsForOni ( "DancePointsForOni", false ), diff --git a/stepmania/src/PrefsManager.h b/stepmania/src/PrefsManager.h index 5ef0385446..ba63a6b711 100644 --- a/stepmania/src/PrefsManager.h +++ b/stepmania/src/PrefsManager.h @@ -154,11 +154,6 @@ public: Preference m_bEventMode; Preference m_iCoinsPerCredit; Preference m_iSongsPerPlay; - - // These options have weird interactions depending on m_bEventMode, - // so wrap them in GameState. - Preference m_CoinMode; - Preference m_bDelayedCreditsReconcile; Preference m_bPickExtraStage; Preference m_bComboContinuesBetweenSongs; diff --git a/stepmania/src/ScreenDebugOverlay.cpp b/stepmania/src/ScreenDebugOverlay.cpp index 8e8566bce8..6d39394907 100644 --- a/stepmania/src/ScreenDebugOverlay.cpp +++ b/stepmania/src/ScreenDebugOverlay.cpp @@ -3,6 +3,7 @@ #include "ScreenDimensions.h" #include "ScreenManager.h" #include "PrefsManager.h" +#include "GamePreferences.h" #include "RageLog.h" #include "GameState.h" #include "PlayerState.h" @@ -524,13 +525,13 @@ class DebugLineAutosync : public IDebugLine class DebugLineCoinMode : public IDebugLine { virtual RString GetDescription() { return COIN_MODE.GetValue(); } - virtual RString GetValue() { return CoinModeToString(PREFSMAN->m_CoinMode); } + virtual RString GetValue() { return CoinModeToString(GamePreferences::m_CoinMode); } virtual bool IsEnabled() { return true; } virtual void Do( RString &sMessageOut ) { - int cm = PREFSMAN->m_CoinMode+1; + int cm = GamePreferences::m_CoinMode+1; wrap( cm, NUM_CoinMode ); - PREFSMAN->m_CoinMode.Set( CoinMode(cm) ); + GamePreferences::m_CoinMode.Set( CoinMode(cm) ); SCREENMAN->RefreshCreditsMessages(); IDebugLine::Do( sMessageOut ); } diff --git a/stepmania/src/ScreenTitleMenu.cpp b/stepmania/src/ScreenTitleMenu.cpp index 669992d7f5..4dffa6b6b8 100644 --- a/stepmania/src/ScreenTitleMenu.cpp +++ b/stepmania/src/ScreenTitleMenu.cpp @@ -2,7 +2,7 @@ #include "ScreenTitleMenu.h" #include "ScreenManager.h" #include "RageUtil.h" -#include "PrefsManager.h" +#include "GamePreferences.h" #include "RageLog.h" #include "AnnouncerManager.h" #include "GameState.h" @@ -30,7 +30,7 @@ ScreenTitleMenu::ScreenTitleMenu() // TRICKY: Do this after GameState::Reset. LIGHTSMAN->SetLightsMode( LIGHTSMODE_JOINING ); - this->SubscribeToMessage( PREFSMAN->m_CoinMode.GetName()+"Changed" ); + this->SubscribeToMessage( GamePreferences::m_CoinMode.GetName()+"Changed" ); } void ScreenTitleMenu::Init() @@ -75,7 +75,7 @@ void ScreenTitleMenu::Input( const InputEventPlus &input ) void ScreenTitleMenu::HandleMessage( const Message &msg ) { - if( msg == PREFSMAN->m_CoinMode.GetName()+"Changed" ) + if( msg == GamePreferences::m_CoinMode.GetName()+"Changed" ) { /* If the CoinMode was changed, we need to reload this screen * so that the right m_aGameCommands will show */