demboyz/demboyz/netmessages/svc_updatestringtable.cpp

26 lines
999 B
C++

#include "svc_updatestringtable.h"
#include "base/bitfile.h"
#include "game/sourcecontext.h"
#include "game/stringtables.h"
#include "netmath.h"
#include "netcontants.h"
namespace NetHandlers
{
bool SVC_UpdateStringTable_BitRead_Internal(BitRead& bitbuf, SourceGameContext& context, NetMsg::SVC_UpdateStringTable* data)
{
data->tableID = bitbuf.ReadUBitLong(math::log2(MAX_TABLES));
data->numChangedEntries = (bitbuf.ReadOneBit() != 0) ? bitbuf.ReadWord() : 1;
data->dataLengthInBits = bitbuf.ReadUBitLong(20);
data->data.reset(new uint8_t[math::BitsToBytes(data->dataLengthInBits)]);
bitbuf.ReadBits(data->data.get(), data->dataLengthInBits);
StringTable *table = &context.stringTables->tables[data->tableID];
bf_read bitbuf2(data->data.get(), math::BitsToBytes(data->dataLengthInBits), data->dataLengthInBits);
table->ParseUpdate(bitbuf2, data->numChangedEntries, context);
return !bitbuf.IsOverflowed();
}
}