From 551d9bfc2359cee85332956aaf690c74a1299d44 Mon Sep 17 00:00:00 2001 From: Steve Checkoway Date: Mon, 24 Mar 2008 12:49:31 +0000 Subject: [PATCH] Make GameManager a namespace rather than a singleton since it doesn't contain any data. --- stepmania/src/GameManager.cpp | 67 +++++++++++++---------------------- stepmania/src/GameManager.h | 47 ++++++++++-------------- stepmania/src/StepMania.cpp | 15 ++++---- 3 files changed, 49 insertions(+), 80 deletions(-) diff --git a/stepmania/src/GameManager.cpp b/stepmania/src/GameManager.cpp index c2709f4172..27b869d46a 100644 --- a/stepmania/src/GameManager.cpp +++ b/stepmania/src/GameManager.cpp @@ -12,8 +12,6 @@ #include "Style.h" #include "Foreach.h" -GameManager* GAMEMAN = NULL; // global and accessable from anywhere in our program - enum { TRACK_1 = 0, @@ -2445,25 +2443,7 @@ static const Game *g_Games[] = &g_Game_Lights, }; -GameManager::GameManager() -{ - // Register with Lua. - { - Lua *L = LUA->Get(); - lua_pushstring( L, "GAMEMAN" ); - this->PushSelf( L ); - lua_settable( L, LUA_GLOBALSINDEX ); - LUA->Release( L ); - } -} - -GameManager::~GameManager() -{ - // Unregister with Lua. - LUA->UnsetGlobal( "GAMEMAN" ); -} - -void GameManager::GetStylesForGame( const Game *pGame, vector& aStylesAddTo, bool editor ) const +void GameManager::GetStylesForGame( const Game *pGame, vector& aStylesAddTo, bool editor ) { for( int s=0; pGame->m_apStyles[s]; ++s ) { @@ -2477,7 +2457,7 @@ void GameManager::GetStylesForGame( const Game *pGame, vector& aSt } } -const Game *GameManager::GetGameForStyle( const Style *pStyle ) const +const Game *GameManager::GetGameForStyle( const Style *pStyle ) { for( size_t g=0; gm_szName); } -const Style* GameManager::GetEditorStyleForStepsType( StepsType st ) const +const Style* GameManager::GetEditorStyleForStepsType( StepsType st ) { for( size_t g=0; g& aStepsTypeAddTo ) const +void GameManager::GetStepsTypesForGame( const Game *pGame, vector& aStepsTypeAddTo ) { FOREACH_ENUM( StepsType, st ) { @@ -2527,7 +2507,7 @@ void GameManager::GetStepsTypesForGame( const Game *pGame, vector& aS } } -void GameManager::GetDemonstrationStylesForGame( const Game *pGame, vector &vpStylesOut ) const +void GameManager::GetDemonstrationStylesForGame( const Game *pGame, vector &vpStylesOut ) { vpStylesOut.clear(); @@ -2541,7 +2521,7 @@ void GameManager::GetDemonstrationStylesForGame( const Game *pGame, vector0 ); // this Game is missing a Style that can be used with the demonstration } -const Style* GameManager::GetHowToPlayStyleForGame( const Game *pGame ) const +const Style* GameManager::GetHowToPlayStyleForGame( const Game *pGame ) { for( int s=0; pGame->m_apStyles[s]; ++s ) { @@ -2554,7 +2534,7 @@ const Style* GameManager::GetHowToPlayStyleForGame( const Game *pGame ) const return NULL; } -void GameManager::GetCompatibleStyles( const Game *pGame, int iNumPlayers, vector &vpStylesOut ) const +void GameManager::GetCompatibleStyles( const Game *pGame, int iNumPlayers, vector &vpStylesOut ) { FOREACH_ENUM( StyleType, styleType ) { @@ -2588,7 +2568,7 @@ void GameManager::GetCompatibleStyles( const Game *pGame, int iNumPlayers, vecto } } -const Style *GameManager::GetFirstCompatibleStyle( const Game *pGame, int iNumPlayers, StepsType st ) const +const Style *GameManager::GetFirstCompatibleStyle( const Game *pGame, int iNumPlayers, StepsType st ) { vector vpStyles; GetCompatibleStyles( pGame, iNumPlayers, vpStyles ); @@ -2601,7 +2581,7 @@ const Style *GameManager::GetFirstCompatibleStyle( const Game *pGame, int iNumPl } -void GameManager::GetEnabledGames( vector& aGamesOut ) const +void GameManager::GetEnabledGames( vector& aGamesOut ) { for( size_t g=0; g& aGamesOut ) const } } -const Game* GameManager::GetDefaultGame() const +const Game* GameManager::GetDefaultGame() { const Game *pDefault = NULL; if( pDefault == NULL ) @@ -2629,7 +2609,7 @@ const Game* GameManager::GetDefaultGame() const return pDefault; } -int GameManager::GetIndexFromGame( const Game* pGame ) const +int GameManager::GetIndexFromGame( const Game* pGame ) { for( size_t g=0; g= 0 ); ASSERT( index < (int) ARRAYLEN(g_Games) ); return g_Games[index]; } -bool GameManager::IsGameEnabled( const Game *pGame ) const +bool GameManager::IsGameEnabled( const Game *pGame ) { return NOTESKIN->DoNoteSkinsExistForGame( pGame ); } @@ -2715,30 +2695,31 @@ const Style* GameManager::GameAndStringToStyle( const Game *game, RString sStyle // lua start #include "LuaBinding.h" -class LunaGameManager: public Luna +namespace { -public: - static int StepsTypeToLocalizedString( T* p, lua_State *L ) { lua_pushstring(L, p->GetStepsTypeInfo(Enum::Check(L, 1)).GetLocalizedString() ); return 1; } - static int GetFirstStepsTypeForGame( T* p, lua_State *L ) + + int StepsTypeToLocalizedString( lua_State *L ) { lua_pushstring(L, GameManager::GetStepsTypeInfo(Enum::Check(L, 1)).GetLocalizedString() ); return 1; } + int GetFirstStepsTypeForGame( lua_State *L ) { Game *pGame = Luna::check( L, 1 ); vector vstAddTo; - p->GetStepsTypesForGame( pGame, vstAddTo ); + GameManager::GetStepsTypesForGame( pGame, vstAddTo ); ASSERT( !vstAddTo.empty() ); StepsType st = vstAddTo[0]; lua_pushnumber(L, st); return 1; } - LunaGameManager() + const luaL_Reg GameManagerTable[] = { - ADD_METHOD( StepsTypeToLocalizedString ); - ADD_METHOD( GetFirstStepsTypeForGame ); - } + LIST_METHOD( StepsTypeToLocalizedString ), + LIST_METHOD( GetFirstStepsTypeForGame ), + { NULL, NULL } + }; }; -LUA_REGISTER_CLASS( GameManager ) +LUA_REGISTER_NAMESPACE( GameManager ) // lua end diff --git a/stepmania/src/GameManager.h b/stepmania/src/GameManager.h index 9594dd433b..f8c67df81f 100644 --- a/stepmania/src/GameManager.h +++ b/stepmania/src/GameManager.h @@ -19,38 +19,29 @@ struct StepsTypeInfo RString GetLocalizedString() const; }; -class GameManager +namespace GameManager { -public: - GameManager(); - ~GameManager(); + void GetStylesForGame( const Game* pGame, vector& aStylesAddTo, bool editor=false ); + const Game *GetGameForStyle( const Style *pStyle ); + void GetStepsTypesForGame( const Game* pGame, vector& aStepsTypeAddTo ); + const Style *GetEditorStyleForStepsType( StepsType st ); + void GetDemonstrationStylesForGame( const Game *pGame, vector &vpStylesOut ); + const Style *GetHowToPlayStyleForGame( const Game* pGame ); + void GetCompatibleStyles( const Game *pGame, int iNumPlayers, vector &vpStylesOut ); + const Style *GetFirstCompatibleStyle( const Game *pGame, int iNumPlayers, StepsType st ); - void GetStylesForGame( const Game* pGame, vector& aStylesAddTo, bool editor=false ) const; - const Game *GetGameForStyle( const Style *pStyle ) const; - void GetStepsTypesForGame( const Game* pGame, vector& aStepsTypeAddTo ) const; - const Style *GetEditorStyleForStepsType( StepsType st ) const; - void GetDemonstrationStylesForGame( const Game *pGame, vector &vpStylesOut ) const; - const Style *GetHowToPlayStyleForGame( const Game* pGame ) const; - void GetCompatibleStyles( const Game *pGame, int iNumPlayers, vector &vpStylesOut ) const; - const Style *GetFirstCompatibleStyle( const Game *pGame, int iNumPlayers, StepsType st ) const; + void GetEnabledGames( vector& aGamesOut ); + const Game* GetDefaultGame(); + bool IsGameEnabled( const Game* pGame ); + int GetIndexFromGame( const Game* pGame ); + const Game* GetGameFromIndex( int index ); - void GetEnabledGames( vector& aGamesOut ) const; - const Game* GetDefaultGame() const; - bool IsGameEnabled( const Game* pGame ) const; - int GetIndexFromGame( const Game* pGame ) const; - const Game* GetGameFromIndex( int index ) const; - - static const StepsTypeInfo &GetStepsTypeInfo( StepsType st ); - static StepsType StringToStepsType( RString sStepsType ); - static const Game* StringToGameType( RString sGameType ); + const StepsTypeInfo &GetStepsTypeInfo( StepsType st ); + StepsType StringToStepsType( RString sStepsType ); + const Game* StringToGameType( RString sGameType ); const Style* GameAndStringToStyle( const Game* pGame, RString sStyle ); - static RString StyleToLocalizedString( const Style* s ); - - // Lua - void PushSelf( lua_State *L ); -}; - -extern GameManager* GAMEMAN; // global and accessable from anywhere in our program + RString StyleToLocalizedString( const Style* s ); +} #endif diff --git a/stepmania/src/StepMania.cpp b/stepmania/src/StepMania.cpp index 9f37af2dfc..2f1dd07673 100644 --- a/stepmania/src/StepMania.cpp +++ b/stepmania/src/StepMania.cpp @@ -268,7 +268,6 @@ void ShutdownGame() SAFE_DELETE( SOUND ); /* uses GAMESTATE, PREFSMAN */ SAFE_DELETE( PREFSMAN ); SAFE_DELETE( GAMESTATE ); - SAFE_DELETE( GAMEMAN ); SAFE_DELETE( NOTESKIN ); SAFE_DELETE( THEME ); SAFE_DELETE( ANNOUNCER ); @@ -752,21 +751,20 @@ RageDisplay *CreateDisplay() static void SwitchToLastPlayedGame() { - ASSERT( GAMEMAN ); - const Game *pGame = GAMEMAN->StringToGameType( PREFSMAN->GetCurrentGame() ); + const Game *pGame = GameManager::StringToGameType( PREFSMAN->GetCurrentGame() ); /* If the active game type isn't actually available, revert to the default. */ if( pGame == NULL ) - pGame = GAMEMAN->GetDefaultGame(); + pGame = GameManager::GetDefaultGame(); - if( !GAMEMAN->IsGameEnabled( pGame ) && pGame != GAMEMAN->GetDefaultGame() ) + if( !GameManager::IsGameEnabled( pGame ) && pGame != GameManager::GetDefaultGame() ) { - pGame = GAMEMAN->GetDefaultGame(); + pGame = GameManager::GetDefaultGame(); LOG->Warn( "Default NoteSkin for \"%s\" missing, reverting to \"%s\"", - pGame->m_szName, GAMEMAN->GetDefaultGame()->m_szName ); + pGame->m_szName, GameManager::GetDefaultGame()->m_szName ); } - ASSERT( GAMEMAN->IsGameEnabled(pGame) ); + ASSERT( GameManager::IsGameEnabled(pGame) ); StepMania::ChangeCurrentGame( pGame ); } @@ -992,7 +990,6 @@ int main(int argc, char* argv[]) CheckSettings(); - GAMEMAN = new GameManager; THEME = new ThemeManager; ANNOUNCER = new AnnouncerManager; NOTESKIN = new NoteSkinManager;