Don't create a new class just to register a screen.

This commit is contained in:
Steve Checkoway
2006-11-19 00:33:52 +00:00
parent 62b0d80b72
commit dc4d0317b5
2 changed files with 3 additions and 7 deletions
+2 -6
View File
@@ -12,15 +12,11 @@
class InputEventPlus;
class Screen;
typedef Screen* (*CreateScreenFn)(const RString& sClassName);
void RegisterScreenClass( const RString& sClassName, CreateScreenFn pfn );
// Each Screen class should have a REGISTER_SCREEN_CLASS in its CPP file.
struct RegisterScreenClass { RegisterScreenClass( const RString &sClassName, CreateScreenFn pfn ); };
#define REGISTER_SCREEN_CLASS( className ) \
static Screen* Create##className( const RString &sName ) { LuaThreadVariable var( "LoadingScreen", sName ); Screen *pRet = new className; pRet->SetName( sName ); Screen::InitScreen( pRet ); return pRet; } \
struct Register##className { \
Register##className() { RegisterScreenClass( #className,Create##className); } \
}; \
static Register##className register_##className;
static RegisterScreenClass register_##className( #className, Create##className )
enum ScreenType
{
+1 -1
View File
@@ -207,7 +207,7 @@ namespace ScreenManagerUtil
};
using namespace ScreenManagerUtil;
void RegisterScreenClass( const RString& sClassName, CreateScreenFn pfn )
RegisterScreenClass::RegisterScreenClass( const RString& sClassName, CreateScreenFn pfn )
{
if( g_pmapRegistrees == NULL )
g_pmapRegistrees = new map<RString,CreateScreenFn>;