2015-05-15 03:36:57 +02:00
|
|
|
|
|
|
|
#include "svc_classinfo.h"
|
2015-06-25 05:59:39 +02:00
|
|
|
#include "base/bitfile.h"
|
2015-05-15 03:36:57 +02:00
|
|
|
#include "netmath.h"
|
|
|
|
|
|
|
|
using class_t = NetMsg::SVC_ClassInfo::class_t;
|
|
|
|
|
|
|
|
namespace NetHandlers
|
|
|
|
{
|
2015-06-19 02:23:26 +02:00
|
|
|
bool SVC_ClassInfo_BitRead_Internal(BitRead& bitbuf, SourceGameContext& context, NetMsg::SVC_ClassInfo* data)
|
2015-05-15 03:36:57 +02:00
|
|
|
{
|
|
|
|
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();
|
|
|
|
}
|
|
|
|
}
|