diff --git a/stepmania/src/Screen.h b/stepmania/src/Screen.h index cdda2de8a9..17b33a99b1 100644 --- a/stepmania/src/Screen.h +++ b/stepmania/src/Screen.h @@ -9,14 +9,17 @@ #include "GameInput.h" #include "MenuInput.h" #include "StyleInput.h" -#include "ScreenManager.h" #include "ThemeMetric.h" +class Screen; +typedef Screen* (*CreateScreenFn)(const CString& sClassName); +void RegisterScreenClass( const CString& sClassName, CreateScreenFn pfn ); + // Each Screen class should have a REGISTER_SCREEN_CLASS in its CPP file. #define REGISTER_SCREEN_CLASS( className ) \ static Screen* Create##className( const CString &sName ) { Screen *pRet = new className( sName ); pRet->Init(); return pRet; } \ struct Register##className { \ - Register##className() { SCREENMAN->Register(#className,Create##className); } \ + Register##className() { RegisterScreenClass( #className,Create##className); } \ }; \ static Register##className register_##className; diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index f57400390f..c7618d6023 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -40,7 +40,7 @@ static Preference g_bConcurrentLoading( "ConcurrentLoading", false ); // Screen registration static map *g_pmapRegistrees = NULL; -void ScreenManager::Register( const CString& sClassName, CreateScreenFn pfn ) +void RegisterScreenClass( const CString& sClassName, CreateScreenFn pfn ) { if( g_pmapRegistrees == NULL ) g_pmapRegistrees = new map; diff --git a/stepmania/src/ScreenManager.h b/stepmania/src/ScreenManager.h index aa7b10ae7f..60e2332e04 100644 --- a/stepmania/src/ScreenManager.h +++ b/stepmania/src/ScreenManager.h @@ -23,10 +23,6 @@ typedef Screen* (*CreateScreenFn)(const CString& sClassName); class ScreenManager { public: - // Every screen should register its class at program initialization. - static void Register( const CString& sClassName, CreateScreenFn pfn ); - - ScreenManager(); ~ScreenManager();