39 lines
1.3 KiB
C++
39 lines
1.3 KiB
C++
|
|
#include "svc_serverinfo.h"
|
|
#include "base/bitfile.h"
|
|
#include "game/sourcecontext.h"
|
|
|
|
namespace NetHandlers
|
|
{
|
|
bool SVC_ServerInfo_BitRead_Internal(BitRead& bitbuf, SourceGameContext& context, NetMsg::SVC_ServerInfo* data)
|
|
{
|
|
data->protocol = bitbuf.ReadShort();
|
|
data->serverCount = bitbuf.ReadLong();
|
|
data->isHLTV = bitbuf.ReadOneBit() != 0;
|
|
data->isDedicated = bitbuf.ReadOneBit() != 0;
|
|
data->clientCRC = bitbuf.ReadLong();
|
|
data->maxClasses = bitbuf.ReadWord();
|
|
if (context.protocol <= 17)
|
|
{
|
|
data->mapCRC = bitbuf.ReadLong();
|
|
}
|
|
else
|
|
{
|
|
bitbuf.ReadBytes(data->mapMD5, sizeof(data->mapMD5));
|
|
}
|
|
data->playerSlot = bitbuf.ReadByte();
|
|
data->maxClients = bitbuf.ReadByte();
|
|
data->tickInterval = bitbuf.ReadFloat();
|
|
data->os = bitbuf.ReadChar();
|
|
bitbuf.ReadString(data->gameDir, sizeof(data->gameDir));
|
|
bitbuf.ReadString(data->mapName, sizeof(data->mapName));
|
|
bitbuf.ReadString(data->skyName, sizeof(data->skyName));
|
|
bitbuf.ReadString(data->hostName, sizeof(data->hostName));
|
|
if (context.protocol > 15)
|
|
{
|
|
data->isReplay = bitbuf.ReadOneBit() != 0;
|
|
}
|
|
return !bitbuf.IsOverflowed();
|
|
}
|
|
}
|