source-engine-2018-hl2_src/game/shared/gc_replicated_convars.cpp

66 lines
1.7 KiB
C++
Raw Normal View History

2020-04-23 00:56:21 +08:00
//========= Copyright Valve Corporation, All rights reserved. ============//
//
//
//
//=============================================================================
#include "cbase.h"
#include "base_gcmessages.pb.h"
#include "convar.h"
#include "gcsdk/gcclientjob.h"
#include "gcsdk/jobmgr.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
using namespace GCSDK;
//=============================================================================
class CGCReplicateConVars : public CGCClientJob
{
public:
CGCReplicateConVars( CGCClient *pClient ) : CGCClientJob( pClient ) {}
virtual bool BYieldingRunGCJob( GCSDK::IMsgNetPacket *pNetPacket )
{
CProtoBufMsg< CMsgReplicateConVars > msg ( pNetPacket );
for ( int i = 0; i < msg.Body().convars_size(); ++i )
{
const CMsgConVarValue &updatedConVar = msg.Body().convars( i );
ConVar *pVar = g_pCVar->FindVar( updatedConVar.name().data() );
if ( pVar )
{
pVar->SetValue( updatedConVar.value().data() );
}
}
return true;
}
};
//=============================================================================
GC_REG_JOB( CGCClient, CGCReplicateConVars, "CGCReplicateConVars", k_EMsgGCReplicateConVars, GCSDK::k_EServerTypeGCClient );
class CGCUpdateConVar : public CGCClientJob
{
public:
CGCUpdateConVar( CGCClient *pClient ) : CGCClientJob( pClient ) {}
virtual bool BYieldingRunGCJob( GCSDK::IMsgNetPacket *pNetPacket )
{
CProtoBufMsg< CMsgConVarValue > msg ( pNetPacket );
ConVar *pVar = g_pCVar->FindVar( msg.Body().name().data() );
if ( pVar )
{
pVar->SetValue( msg.Body().value().data() );
}
return true;
}
};
GC_REG_JOB( CGCClient, CGCUpdateConVar, "CGCUpdateConVar", k_EMsgGCConVarUpdated, GCSDK::k_EServerTypeGCClient );