//----------------------------------------------------------------------------- // Purpose: Read data on weapon from script file // Output: true - if data2 successfully read // false - if data load fails //----------------------------------------------------------------------------- bool ReadPlayerClassDataFromFileForSlot( IFileSystem* filesystem, const char *szPlayerClassName, PLAYERCLASS_FILE_INFO_HANDLE *phandle, const unsigned char *pICEKey ) { if ( !phandle ) { Assert( 0 ); return false; } *phandle = FindPlayerClassInfoSlot( szPlayerClassName ); FilePlayerClassInfo_t *pFileInfo = GetFilePlayerClassInfoFromHandle( *phandle ); Assert( pFileInfo ); if ( pFileInfo->m_bParsedScript ) return true; char sz[128]; Q_snprintf( sz, sizeof( sz ), "scripts/playerclass_%s", szPlayerClassName ); KeyValues *pKV = ReadEncryptedKVFile( filesystem, sz, pICEKey ); if ( !pKV ) return false; pFileInfo->Parse( pKV, szPlayerClassName ); pKV->deleteThis(); return true; }
const CSDKPlayerClassInfo &CSDKTeam::GetPlayerClassInfo( int iPlayerClass ) const { Assert( iPlayerClass >= 0 && iPlayerClass < m_hPlayerClassInfoHandles.Count() ); const FilePlayerClassInfo_t *pPlayerClassInfo = GetFilePlayerClassInfoFromHandle( m_hPlayerClassInfoHandles[iPlayerClass] ); const CSDKPlayerClassInfo *pSDKInfo; #ifdef _DEBUG pSDKInfo = dynamic_cast< const CSDKPlayerClassInfo* >( pPlayerClassInfo ); Assert( pSDKInfo ); #else pSDKInfo = static_cast< const CSDKPlayerClassInfo* >( pPlayerClassInfo ); #endif return *pSDKInfo; }
bool CSDKTeam::IsClassOnTeam( const char *pszClassName, int &iClassNum ) const { iClassNum = PLAYERCLASS_UNDEFINED; // Random is always on every team if( FStrEq( pszClassName, "cls_random" ) ) { iClassNum = PLAYERCLASS_RANDOM; return true; } for( int i=0;i<m_hPlayerClassInfoHandles.Count(); i++ ) { FilePlayerClassInfo_t *pPlayerClassInfo = GetFilePlayerClassInfoFromHandle( m_hPlayerClassInfoHandles[i] ); if( stricmp( pszClassName, pPlayerClassInfo->m_szSelectCmd ) == 0 ) { iClassNum = i; return true; } } return false; }