Transition away from Screen(sName), to Screen(); set the name just

before calling Init().  This will reduce the amount of repetitive
boilerplate code for screens, allowing a screen to have no explicit ctor.
This commit is contained in:
Glenn Maynard
2006-01-15 18:36:40 +00:00
parent 4ed508978a
commit 1fe278b48d
2 changed files with 12 additions and 0 deletions
+4
View File
@@ -25,6 +25,10 @@ void Screen::InitScreen( Screen *pScreen )
pScreen->Init();
}
Screen::Screen()
{
}
Screen::Screen( CString sName )
{
SetName( sName );
+8
View File
@@ -23,6 +23,13 @@ void RegisterScreenClass( const CString& sClassName, CreateScreenFn pfn );
}; \
static Register##className register_##className;
#define REGISTER_SCREEN_CLASS_NEW( className ) \
static Screen* Create##className( const CString &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;
enum ScreenType
{
attract,
@@ -36,6 +43,7 @@ class Screen : public ActorFrame
public:
static void InitScreen( Screen *pScreen );
Screen();
Screen( CString sName ); // enforce that all screens have m_sName filled in
virtual ~Screen();