void CreateGameRulesObject( const char *pClassName ) { // Delete the old game rules object. delete g_pGameRules; g_pGameRules = NULL; // Create a new game rules object. CGameRulesRegister *pReg = CGameRulesRegister::FindByName( pClassName ); if ( !pReg ) Error( "InitGameRules: missing gamerules class '%s' on the server", pClassName ); pReg->CreateGameRules(); if ( !g_pGameRules ) { Error( "InitGameRules: game rules entity (%s) not created", pClassName ); } // Make sure the client gets notification to make a new game rules object. Assert( g_StringTableGameRules ); g_StringTableGameRules->AddString( true, "classname", strlen( pClassName ) + 1, pClassName ); if ( g_pGameRules ) { g_pGameRules->CreateCustomNetworkStringTables(); } }
void OnGameRulesCreationStringChanged( void *object, INetworkStringTable *stringTable, int stringNumber, const char *newString, void const *newData ) { // The server has created a new CGameRules object. delete g_pGameRules; g_pGameRules = NULL; const char *pClassName = (const char*)newData; CGameRulesRegister *pReg = CGameRulesRegister::FindByName( pClassName ); if ( !pReg ) { Error( "OnGameRulesCreationStringChanged: missing gamerules class '%s' on the client", pClassName ); } // Create the new game rules object. pReg->CreateGameRules(); if ( !g_pGameRules ) { Error( "OnGameRulesCreationStringChanged: game rules entity (%s) not created", pClassName ); } }