Allow screen aliasing.

This commit is contained in:
Glenn Maynard
2003-09-27 22:30:51 +00:00
parent 70e1a6bb16
commit c15e0cec49
114 changed files with 154 additions and 138 deletions
+16 -1
View File
@@ -302,7 +302,22 @@ void Screen::ClearMessageQueue( const ScreenMessage SM )
Screen* Screen::Create( CString sClassName )
{
#define IF_RETURN(X) if(sClassName.CompareNoCase(#X)==0) return new X;
/* "ScreenCompany@ScreenOtherCompany" loads ScreenCompany with the
* asset "ScreenOtherCompany", so (if it supports it) it'll use
* metric, graphic, etc. names starting with "ScreenOtherCompany". */
CStringArray parts;
split( sClassName, "@", parts );
if( parts.size() != 1 && parts.size() != 2 )
RageException::Throw("Bad Screen name \"%s\"", sClassName.c_str() );
CString sName = sClassName;
if( parts.size() == 2 )
{
sClassName = parts[0];
sName = parts[1];
}
#define IF_RETURN(X) if(sClassName.CompareNoCase(#X)==0) return new X(sName);
IF_RETURN( ScreenAppearanceOptions );
IF_RETURN( ScreenCaution );