demboyz/demboyz/netmessages/svc_classinfo.cpp

30 lines
1.0 KiB
C++

#include "svc_classinfo.h"
#include "base/bitfile.h"
#include "netmath.h"
using class_t = NetMsg::SVC_ClassInfo::class_t;
namespace NetHandlers
{
bool SVC_ClassInfo_BitRead_Internal(BitRead& bitbuf, SourceGameContext& context, NetMsg::SVC_ClassInfo* data)
{
const int16_t numServerClasses = bitbuf.ReadShort();
const bool createOnClient = bitbuf.ReadOneBit() != 0;
data->numServerClasses = numServerClasses;
data->createOnClient = createOnClient;
if (!createOnClient)
{
const int numServerClassBits = math::log2(numServerClasses) + 1;
data->serverClasses.resize(numServerClasses);
for (class_t& serverClass : data->serverClasses)
{
serverClass.classID = bitbuf.ReadUBitLong(numServerClassBits);
bitbuf.ReadString(serverClass.className, sizeof(serverClass.className));
bitbuf.ReadString(serverClass.dataTableName, sizeof(serverClass.dataTableName));
}
}
return !bitbuf.IsOverflowed();
}
}