CResourceScript * CResourceBase::AddResourceFile( LPCTSTR pszName ) { ADDTOCALLSTACK("CResourceBase::AddResourceFile"); ASSERT(pszName != NULL); // Is this really just a dir name ? TCHAR szName[_MAX_PATH]; ASSERT(strlen(pszName) < COUNTOF(szName)); strcpy(szName, pszName); TCHAR szTitle[_MAX_PATH]; strcpy(szTitle, CScript::GetFilesTitle( szName )); if ( szTitle[0] == '\0' ) { AddResourceDir( pszName ); return NULL; } LPCTSTR pszExt = CScript::GetFilesExt( szTitle ); if ( pszExt == NULL ) { // No file extension provided, so append .scp to the filename strcat( szName, GRAY_SCRIPT ); strcat( szTitle, GRAY_SCRIPT ); } if ( ! strnicmp( szTitle, GRAY_FILE "tables", strlen(GRAY_FILE "tables"))) { // Don't dupe this. return NULL; } // Try to prevent dupes CResourceScript * pNewRes = FindResourceFile(szTitle); if ( pNewRes ) return( pNewRes ); // Find correct path CScript s; if ( ! OpenResourceFind( s, szName )) { return( NULL ); } pNewRes = new CResourceScript( s.GetFilePath() ); m_ResourceFiles.Add(pNewRes); return( pNewRes ); }
inline bool OpenResourceFile( std::ifstream& file, const std::string& category, const std::string& name, const char* ext ) { return FindResourceFile( file, category, name, &ext, 1 ) == 0; }