Added json reader utilities and implemented json reader functions to dem, net, and svc types
This commit is contained in:
@ -19,15 +19,19 @@ namespace NetHandlers
|
||||
|
||||
bool Net_Disconnect_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::Net_Disconnect* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
reader.ReadString("message", data->message, sizeof(data->message));
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool Net_Disconnect_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::Net_Disconnect* data)
|
||||
{
|
||||
jsonbuf.StartObject("net_disconnect");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteString("message", data->message);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void Net_Disconnect_ToString_Internal(std::ostringstream& out, NetMsg::Net_Disconnect* data)
|
||||
|
@ -23,17 +23,23 @@ namespace NetHandlers
|
||||
|
||||
bool Net_File_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::Net_File* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->transferID = reader.ReadUInt32("transferId");
|
||||
reader.ReadString("filename", data->filename, sizeof(data->filename));
|
||||
data->isRequest = reader.ReadBool("isRequest");
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool Net_File_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::Net_File* data)
|
||||
{
|
||||
jsonbuf.StartObject("net_file");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteUInt32("transferId", data->transferID);
|
||||
jsonbuf.WriteString("filename", data->filename);
|
||||
jsonbuf.WriteBool("isRequest", data->isRequest);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void Net_File_ToString_Internal(std::ostringstream& out, NetMsg::Net_File* data)
|
||||
|
@ -21,8 +21,6 @@ namespace NetHandlers
|
||||
|
||||
bool Net_NOP_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::Net_NOP* data)
|
||||
{
|
||||
jsonbuf.StartObject("net_nop");
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -21,7 +21,7 @@ namespace NetHandlers
|
||||
bool Net_SetConVar_BitWrite_Internal(BitWrite& bitbuf, const SourceGameContext& context, NetMsg::Net_SetConVar* data)
|
||||
{
|
||||
bitbuf.WriteByte(data->cvars.size());
|
||||
for (cvar_t& cvar : data->cvars)
|
||||
for (const cvar_t& cvar : data->cvars)
|
||||
{
|
||||
bitbuf.WriteString(cvar.name);
|
||||
bitbuf.WriteString(cvar.value);
|
||||
@ -31,14 +31,24 @@ namespace NetHandlers
|
||||
|
||||
bool Net_SetConVar_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::Net_SetConVar* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
|
||||
base::JsonReaderArray cvars = reader.ReadArray("cvars");
|
||||
cvars.TransformTo(data->cvars, [](base::JsonReaderObject& obj, cvar_t& cvar)
|
||||
{
|
||||
obj.ReadString("name", cvar.name, sizeof(cvar.name));
|
||||
obj.ReadString("value", cvar.value, sizeof(cvar.value));
|
||||
});
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool Net_SetConVar_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::Net_SetConVar* data)
|
||||
{
|
||||
jsonbuf.StartObject("net_setconvar");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.StartArray("cvars");
|
||||
for (cvar_t& cvar : data->cvars)
|
||||
for (const cvar_t& cvar : data->cvars)
|
||||
{
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteString("name", cvar.name);
|
||||
@ -47,7 +57,7 @@ namespace NetHandlers
|
||||
}
|
||||
jsonbuf.EndArray();
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void Net_SetConVar_ToString_Internal(std::ostringstream& out, NetMsg::Net_SetConVar* data)
|
||||
|
@ -22,16 +22,21 @@ namespace NetHandlers
|
||||
|
||||
bool Net_SignonState_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::Net_SignonState* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->signonState = reader.ReadUInt32("signonState");
|
||||
data->spawnCount = reader.ReadUInt32("spawnCount");
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool Net_SignonState_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::Net_SignonState* data)
|
||||
{
|
||||
jsonbuf.StartObject("net_signonstate");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteUInt32("signonState", data->signonState);
|
||||
jsonbuf.WriteUInt32("spawnCount", data->spawnCount);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void Net_SignonState_ToString_Internal(std::ostringstream& out, NetMsg::Net_SignonState* data)
|
||||
|
@ -19,15 +19,19 @@ namespace NetHandlers
|
||||
|
||||
bool Net_StringCmd_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::Net_StringCmd* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
reader.ReadString("command", data->command, sizeof(data->command));
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool Net_StringCmd_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::Net_StringCmd* data)
|
||||
{
|
||||
jsonbuf.StartObject("net_stringcmd");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteString("command", data->command);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void Net_StringCmd_ToString_Internal(std::ostringstream& out, NetMsg::Net_StringCmd* data)
|
||||
|
@ -23,17 +23,23 @@ namespace NetHandlers
|
||||
|
||||
bool Net_Tick_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::Net_Tick* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->tick = reader.ReadInt32("tick");
|
||||
data->hostFrameTime = reader.ReadUInt32("hostFrameTime");
|
||||
data->hostFrameTimeStdDev = reader.ReadUInt32("hostFrameTimeStdDev");
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool Net_Tick_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::Net_Tick* data)
|
||||
{
|
||||
jsonbuf.StartObject("net_tick");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteInt32("tick", data->tick);
|
||||
jsonbuf.WriteUInt32("hostFrameTime", data->hostFrameTime);
|
||||
jsonbuf.WriteUInt32("hostFrameTimeStdDev", data->hostFrameTimeStdDev);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void Net_Tick_ToString_Internal(std::ostringstream& out, NetMsg::Net_Tick* data)
|
||||
|
@ -111,10 +111,10 @@ void NetHandlers::DestroyNetMsgStructs(void* netDataStructs[32])
|
||||
&NetHandlers::SVC_GetCvarValue_##funcname \
|
||||
}
|
||||
|
||||
typedef bool (*NetMsgBitReadFn)(BitRead& bitbuf, SourceGameContext& context, void* data);
|
||||
typedef bool (*NetMsgBitWriteFn)(BitWrite& bitbuf, const SourceGameContext& context, void* data);
|
||||
typedef bool (*NetMsgJsonReadFn)(JsonRead& jsonbuf, SourceGameContext& context, void* data);
|
||||
typedef bool (*NetMsgJsonWriteFn)(JsonWrite& jsonbuf, const SourceGameContext& context, void* data);
|
||||
typedef bool (*NetMsgBitReadFn)(NetHandlers::BitRead& bitbuf, SourceGameContext& context, void* data);
|
||||
typedef bool (*NetMsgBitWriteFn)(NetHandlers::BitWrite& bitbuf, const SourceGameContext& context, void* data);
|
||||
typedef bool (*NetMsgJsonReadFn)(NetHandlers::JsonRead& jsonbuf, SourceGameContext& context, void* data);
|
||||
typedef bool (*NetMsgJsonWriteFn)(NetHandlers::JsonWrite& jsonbuf, const SourceGameContext& context, void* data);
|
||||
typedef void (*NetMsgToStringFn)(std::ostringstream& out, void* data);
|
||||
|
||||
bool NetHandlers::NetMsg_BitRead(uint32_t type, BitRead& bitbuf, SourceGameContext& context, void* data)
|
||||
|
@ -6,16 +6,22 @@
|
||||
|
||||
namespace base
|
||||
{
|
||||
class JsonReaderFile;
|
||||
class JsonWriterFile;
|
||||
class BitFileRead;
|
||||
class BitFileWrite;
|
||||
}
|
||||
|
||||
class bf_read;
|
||||
class bf_write;
|
||||
|
||||
using BitRead = bf_read;
|
||||
using BitWrite = bf_write;
|
||||
class JsonRead;
|
||||
using JsonWrite = base::JsonWriterFile;
|
||||
namespace NetHandlers
|
||||
{
|
||||
using BitRead = bf_read;
|
||||
using BitWrite = bf_write;
|
||||
using JsonRead = base::JsonReaderFile;
|
||||
using JsonWrite = base::JsonWriterFile;
|
||||
}
|
||||
|
||||
struct SourceGameContext
|
||||
{
|
||||
|
@ -45,19 +45,27 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_BSPDecal_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_BSPDecal* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
DemoJsonReader::ReadVector(reader, "position", data->position);
|
||||
data->decalTextureIndex = reader.ReadUInt32("decalTextureIndex");
|
||||
data->entIndex = reader.ReadUInt32("entIndex");
|
||||
data->modelIndex = reader.ReadUInt32("modelIndex");
|
||||
data->lowPriority = reader.ReadBool("lowPriority");
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_BSPDecal_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_BSPDecal* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_bspdecal");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
DemoJsonWriter::WriteVector(jsonbuf, "position", data->position);
|
||||
jsonbuf.WriteUInt32("decalTextureIndex", data->decalTextureIndex);
|
||||
jsonbuf.WriteUInt32("entIndex", data->entIndex);
|
||||
jsonbuf.WriteUInt32("modelIndex", data->modelIndex);
|
||||
jsonbuf.WriteBool("lowPriority", data->lowPriority);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_BSPDecal_ToString_Internal(std::ostringstream& out, NetMsg::SVC_BSPDecal* data)
|
||||
|
@ -47,12 +47,27 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_ClassInfo_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_ClassInfo* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->numServerClasses = reader.ReadInt32("numServerClasses");
|
||||
data->createOnClient = reader.ReadBool("createOnClient");
|
||||
if (!data->createOnClient)
|
||||
{
|
||||
base::JsonReaderArray serverClasses = reader.ReadArray("serverClasses");
|
||||
serverClasses.TransformTo(data->serverClasses, [](base::JsonReaderObject& obj, class_t& serverClass)
|
||||
{
|
||||
serverClass.classID = obj.ReadUInt32("classId");
|
||||
obj.ReadString("className", serverClass.className, sizeof(serverClass.className));
|
||||
obj.ReadString("dataTableName", serverClass.dataTableName, sizeof(serverClass.dataTableName));
|
||||
});
|
||||
}
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_ClassInfo_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_ClassInfo* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_classinfo");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteInt32("numServerClasses", data->numServerClasses);
|
||||
jsonbuf.WriteBool("createOnClient", data->createOnClient);
|
||||
if (!data->createOnClient)
|
||||
@ -67,7 +82,7 @@ namespace NetHandlers
|
||||
jsonbuf.EndArray();
|
||||
}
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_ClassInfo_ToString_Internal(std::ostringstream& out, NetMsg::SVC_ClassInfo* data)
|
||||
|
@ -82,12 +82,29 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_CreateStringTable_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_CreateStringTable* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->isFileNames = reader.ReadBool("isFilenames");
|
||||
reader.ReadString("tableName", data->tableName, sizeof(data->tableName));
|
||||
data->maxEntries = reader.ReadUInt32("maxEntries");
|
||||
data->numEntries = reader.ReadUInt32("numEntries");
|
||||
data->dataLengthInBits = reader.ReadInt32("dataLengthInBits");
|
||||
data->isUserDataFixedSize = reader.ReadBool("isUserDataFixedSize");
|
||||
data->userDataSize = reader.ReadUInt32("userDataSize");
|
||||
data->userDataSizeBits = reader.ReadUInt32("userDataSizeBits");
|
||||
if (context.protocol > 14)
|
||||
{
|
||||
data->unk1 = reader.ReadBool("unk1");
|
||||
}
|
||||
data->data.reset(new uint8_t[math::BitsToBytes(data->dataLengthInBits)]);
|
||||
reader.ReadBits("data", data->data.get(), data->dataLengthInBits);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_CreateStringTable_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_CreateStringTable* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_createstringtable");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteBool("isFilenames", data->isFileNames);
|
||||
jsonbuf.WriteString("tableName", data->tableName);
|
||||
jsonbuf.WriteUInt32("maxEntries", data->maxEntries);
|
||||
@ -102,7 +119,7 @@ namespace NetHandlers
|
||||
}
|
||||
jsonbuf.WriteBits("data", data->data.get(), data->dataLengthInBits);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_CreateStringTable_ToString_Internal(std::ostringstream& out, NetMsg::SVC_CreateStringTable* data)
|
||||
|
@ -25,15 +25,19 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_CrosshairAngle_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_CrosshairAngle* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
DemoJsonReader::ReadAngle(reader, "angle", data->angle);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_CrosshairAngle_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_CrosshairAngle* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_crosshairangle");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
DemoJsonWriter::WriteAngle(jsonbuf, "angle", data->angle);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_CrosshairAngle_ToString_Internal(std::ostringstream& out, NetMsg::SVC_CrosshairAngle* data)
|
||||
|
@ -28,18 +28,26 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_EntityMessage_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_EntityMessage* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->entIndex = reader.ReadUInt32("entIndex");
|
||||
data->classID = reader.ReadUInt32("classId");
|
||||
data->dataLengthInBits = reader.ReadUInt32("dataLengthInBits");
|
||||
data->data.reset(new uint8_t[math::BitsToBytes(data->dataLengthInBits)]);
|
||||
reader.ReadBits("data", data->data.get(), data->dataLengthInBits);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_EntityMessage_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_EntityMessage* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_entitymessage");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteUInt32("entIndex", data->entIndex);
|
||||
jsonbuf.WriteUInt32("classId", data->classID);
|
||||
jsonbuf.WriteUInt32("dataLengthInBits", data->dataLengthInBits);
|
||||
jsonbuf.WriteBits("data", data->data.get(), data->dataLengthInBits);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_EntityMessage_ToString_Internal(std::ostringstream& out, NetMsg::SVC_EntityMessage* data)
|
||||
|
@ -27,16 +27,21 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_FixAngle_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_FixAngle* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->relative = reader.ReadBool("relative");
|
||||
DemoJsonReader::ReadAngle(reader, "angle", data->angle);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_FixAngle_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_FixAngle* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_fixangle");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteBool("relative", data->relative);
|
||||
DemoJsonWriter::WriteAngle(jsonbuf, "angle", data->angle);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_FixAngle_ToString_Internal(std::ostringstream& out, NetMsg::SVC_FixAngle* data)
|
||||
|
@ -24,16 +24,22 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_GameEvent_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_GameEvent* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->dataLengthInBits = reader.ReadUInt32("dataLengthInBits");
|
||||
data->data.reset(new uint8_t[math::BitsToBytes(data->dataLengthInBits)]);
|
||||
reader.ReadBits("data", data->data.get(), data->dataLengthInBits);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_GameEvent_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_GameEvent* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_gameevent");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteUInt32("dataLengthInBits", data->dataLengthInBits);
|
||||
jsonbuf.WriteBits("data", data->data.get(), data->dataLengthInBits);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_GameEvent_ToString_Internal(std::ostringstream& out, NetMsg::SVC_GameEvent* data)
|
||||
|
@ -68,12 +68,29 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_GameEventList_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_GameEventList* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
|
||||
base::JsonReaderArray eventDescriptors = reader.ReadArray("eventDescriptors");
|
||||
eventDescriptors.TransformTo(data->eventDescriptors, [](base::JsonReaderObject& obj, EventDescriptor& event)
|
||||
{
|
||||
event.id = obj.ReadUInt32("id");
|
||||
obj.ReadString("name", event.name, sizeof(event.name));
|
||||
base::JsonReaderArray values = obj.ReadArray("values");
|
||||
values.TransformTo(event.values, [](base::JsonReaderObject& obj, EventValue& value)
|
||||
{
|
||||
value.type = obj.ReadUInt32("type");
|
||||
obj.ReadString("name", value.name, sizeof(value.name));
|
||||
});
|
||||
});
|
||||
data->dataLengthInBits = CalculateNumDataBits(data->eventDescriptors);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_GameEventList_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_GameEventList* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_gameeventlist");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.StartArray("eventDescriptors");
|
||||
for (const EventDescriptor& event : data->eventDescriptors)
|
||||
{
|
||||
@ -93,7 +110,7 @@ namespace NetHandlers
|
||||
}
|
||||
jsonbuf.EndArray();
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_GameEventList_ToString_Internal(std::ostringstream& out, NetMsg::SVC_GameEventList* data)
|
||||
|
@ -21,16 +21,21 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_GetCvarValue_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_GetCvarValue* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->cookie = reader.ReadInt32("cookie");
|
||||
reader.ReadString("cvarName", data->cvarName, sizeof(data->cvarName));
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_GetCvarValue_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_GetCvarValue* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_getcvarvalue");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteInt32("cookie", data->cookie);
|
||||
jsonbuf.WriteString("cvarName", data->cvarName);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_GetCvarValue_ToString_Internal(std::ostringstream& out, NetMsg::SVC_GetCvarValue* data)
|
||||
|
@ -37,17 +37,24 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_Menu_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_Menu* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->type = static_cast<DialogType>(reader.ReadInt32("dialogType"));
|
||||
data->dataLengthInBytes = reader.ReadUInt32("dataLengthInBytes");
|
||||
data->menuBinaryKeyValues.reset(new uint8_t[data->dataLengthInBytes]);
|
||||
reader.ReadBytes("data", data->menuBinaryKeyValues.get(), data->dataLengthInBytes);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_Menu_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_Menu* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_menu");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteInt32("dialogType", static_cast<int16_t>(data->type));
|
||||
jsonbuf.WriteUInt32("dataLengthInBytes", data->dataLengthInBytes);
|
||||
jsonbuf.WriteBytes("data", data->menuBinaryKeyValues.get(), data->dataLengthInBytes);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_Menu_ToString_Internal(std::ostringstream& out, NetMsg::SVC_Menu* data)
|
||||
|
@ -50,12 +50,24 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_PacketEntities_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_PacketEntities* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->maxEntries = reader.ReadInt32("maxEntries");
|
||||
data->isDelta = reader.ReadBool("isDelta");
|
||||
data->deltaFromTick = reader.ReadInt32("deltaFromTick");
|
||||
data->baselineIndex = reader.ReadUInt32("baselineIndex");
|
||||
data->numUpdatedEntries = reader.ReadUInt32("numUpdatedEntries");
|
||||
data->dataLengthInBits = reader.ReadUInt32("dataLengthInBits");
|
||||
data->updateBaseline = reader.ReadBool("updateBaseline");
|
||||
data->data.reset(new uint8_t[math::BitsToBytes(data->dataLengthInBits)]);
|
||||
reader.ReadBits("data", data->data.get(), data->dataLengthInBits);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_PacketEntities_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_PacketEntities* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_packetentities");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteInt32("maxEntries", data->maxEntries);
|
||||
jsonbuf.WriteBool("isDelta", data->isDelta);
|
||||
jsonbuf.WriteInt32("deltaFromTick", data->deltaFromTick);
|
||||
@ -65,7 +77,7 @@ namespace NetHandlers
|
||||
jsonbuf.WriteBool("updateBaseline", data->updateBaseline);
|
||||
jsonbuf.WriteBits("data", data->data.get(), data->dataLengthInBits);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_PacketEntities_ToString_Internal(std::ostringstream& out, NetMsg::SVC_PacketEntities* data)
|
||||
|
@ -35,16 +35,21 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_Prefetch_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_Prefetch* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->type = reader.ReadUInt32("type");
|
||||
data->soundIndex = reader.ReadUInt32("soundIndex");
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_Prefetch_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_Prefetch* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_prefetch");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();;
|
||||
jsonbuf.WriteUInt32("type", data->type);
|
||||
jsonbuf.WriteUInt32("soundIndex", data->soundIndex);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_Prefetch_ToString_Internal(std::ostringstream& out, NetMsg::SVC_Prefetch* data)
|
||||
|
@ -19,15 +19,19 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_Print_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_Print* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
reader.ReadString("text", data->text, sizeof(data->text));
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_Print_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_Print* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_print");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteString("text", data->text);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_Print_ToString_Internal(std::ostringstream& out, NetMsg::SVC_Print* data)
|
||||
|
@ -25,17 +25,24 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_SendTable_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_SendTable* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->needsDecoder = reader.ReadBool("needsDecoder");
|
||||
data->dataLengthInBits = reader.ReadUInt32("dataLengthInBits");
|
||||
data->data.reset(new uint8_t[math::BitsToBytes(data->dataLengthInBits)]);
|
||||
reader.ReadBits("data", data->data.get(), data->dataLengthInBits);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_SendTable_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_SendTable* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_sendtable");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteBool("needsDecoder", data->needsDecoder);
|
||||
jsonbuf.WriteUInt32("dataLengthInBits", data->dataLengthInBits);
|
||||
jsonbuf.WriteBits("data", data->data.get(), data->dataLengthInBits);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_SendTable_ToString_Internal(std::ostringstream& out, NetMsg::SVC_SendTable* data)
|
||||
|
@ -69,12 +69,41 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_ServerInfo_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_ServerInfo* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->protocol = reader.ReadInt32("protocol");
|
||||
data->serverCount = reader.ReadUInt32("serverCount");
|
||||
data->isHLTV = reader.ReadBool("isHltv");
|
||||
data->isDedicated = reader.ReadBool("isDedicated");
|
||||
data->clientCRC = reader.ReadUInt32("clientCrc");
|
||||
data->maxClasses = reader.ReadUInt32("maxClasses");
|
||||
if (context.protocol <= 17)
|
||||
{
|
||||
data->mapCRC = reader.ReadUInt32("mapCRC");
|
||||
}
|
||||
else
|
||||
{
|
||||
reader.ReadBytes("unk1", data->unk1, sizeof(data->unk1));
|
||||
}
|
||||
data->playerSlot = reader.ReadUInt32("playerSlot");
|
||||
data->maxClients = reader.ReadUInt32("maxClients");
|
||||
data->tickInterval = reader.ReadFloat("tickInterval");
|
||||
data->os = reader.ReadChar("os");
|
||||
reader.ReadString("gameDir", data->gameDir, sizeof(data->gameDir));
|
||||
reader.ReadString("mapName", data->mapName, sizeof(data->mapName));
|
||||
reader.ReadString("skyName", data->skyName, sizeof(data->skyName));
|
||||
reader.ReadString("hostName", data->hostName, sizeof(data->hostName));
|
||||
if (context.protocol > 15)
|
||||
{
|
||||
data->unk2 = reader.ReadBool("unk2");
|
||||
}
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_ServerInfo_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_ServerInfo* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_serverinfo");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteInt32("protocol", data->protocol);
|
||||
jsonbuf.WriteUInt32("serverCount", data->serverCount);
|
||||
jsonbuf.WriteBool("isHltv", data->isHLTV);
|
||||
@ -102,7 +131,7 @@ namespace NetHandlers
|
||||
jsonbuf.WriteBool("unk2", data->unk2);
|
||||
}
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_ServerInfo_ToString_Internal(std::ostringstream& out, NetMsg::SVC_ServerInfo* data)
|
||||
|
@ -19,15 +19,19 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_SetPause_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_SetPause* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->isPaused = reader.ReadBool("isPaused");
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_SetPause_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_SetPause* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_setpause");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteBool("isPaused", data->isPaused);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_SetPause_ToString_Internal(std::ostringstream& out, NetMsg::SVC_SetPause* data)
|
||||
|
@ -20,15 +20,19 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_SetView_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_SetView* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->entIndex = reader.ReadUInt32("entIndex");
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_SetView_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_SetView* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_setview");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteUInt32("entIndex", data->entIndex);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_SetView_ToString_Internal(std::ostringstream& out, NetMsg::SVC_SetView* data)
|
||||
|
@ -43,18 +43,26 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_Sounds_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_Sounds* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->reliableSound = reader.ReadBool("reliableSound");
|
||||
data->numSounds = reader.ReadUInt32("numSounds");
|
||||
data->dataLengthInBits = reader.ReadUInt32("dataLengthInBits");
|
||||
data->data.reset(new uint8_t[math::BitsToBytes(data->dataLengthInBits)]);
|
||||
reader.ReadBits("data", data->data.get(), data->dataLengthInBits);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_Sounds_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_Sounds* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_sounds");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteBool("reliableSound", data->reliableSound);
|
||||
jsonbuf.WriteUInt32("numSounds", data->numSounds);
|
||||
jsonbuf.WriteUInt32("dataLengthInBits", data->dataLengthInBits);
|
||||
jsonbuf.WriteBits("data", data->data.get(), data->dataLengthInBits);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_Sounds_ToString_Internal(std::ostringstream& out, NetMsg::SVC_Sounds* data)
|
||||
|
@ -40,17 +40,24 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_TempEntities_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_TempEntities* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->numEntries = reader.ReadUInt32("numEntries");
|
||||
data->dataLengthInBits = reader.ReadUInt32("dataLengthInBits");
|
||||
data->data.reset(new uint8_t[math::BitsToBytes(data->dataLengthInBits)]);
|
||||
reader.ReadBits("data", data->data.get(), data->dataLengthInBits);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_TempEntities_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_TempEntities* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_tempentities");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteUInt32("numEntries", data->numEntries);
|
||||
jsonbuf.WriteUInt32("dataLengthInBits", data->dataLengthInBits);
|
||||
jsonbuf.WriteBits("data", data->data.get(), data->dataLengthInBits);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_TempEntities_ToString_Internal(std::ostringstream& out, NetMsg::SVC_TempEntities* data)
|
||||
|
@ -36,18 +36,26 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_UpdateStringTable_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_UpdateStringTable* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->tableID = reader.ReadUInt32("tableId");
|
||||
data->numChangedEntries = reader.ReadUInt32("numChangedEntries");
|
||||
data->dataLengthInBits = reader.ReadUInt32("dataLengthInBits");
|
||||
data->data.reset(new uint8_t[math::BitsToBytes(data->dataLengthInBits)]);
|
||||
reader.ReadBits("data", data->data.get(), data->dataLengthInBits);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_UpdateStringTable_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_UpdateStringTable* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_updatestringtable");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteUInt32("tableId", data->tableID);
|
||||
jsonbuf.WriteUInt32("numChangedEntries", data->numChangedEntries);
|
||||
jsonbuf.WriteUInt32("dataLengthInBits", data->dataLengthInBits);
|
||||
jsonbuf.WriteBits("data", data->data.get(), data->dataLengthInBits);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_UpdateStringTable_ToString_Internal(std::ostringstream& out, NetMsg::SVC_UpdateStringTable* data)
|
||||
|
@ -28,17 +28,24 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_UserMessage_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_UserMessage* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->msgType = reader.ReadUInt32("msgType");
|
||||
data->dataLengthInBits = reader.ReadUInt32("dataLengthInBits");
|
||||
data->data.reset(new uint8_t[math::BitsToBytes(data->dataLengthInBits)]);
|
||||
reader.ReadBits("data", data->data.get(), data->dataLengthInBits);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_UserMessage_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_UserMessage* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_usermessage");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteUInt32("msgType", data->msgType);
|
||||
jsonbuf.WriteUInt32("dataLengthInBits", data->dataLengthInBits);
|
||||
jsonbuf.WriteBits("data", data->data.get(), data->dataLengthInBits);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_UserMessage_ToString_Internal(std::ostringstream& out, NetMsg::SVC_UserMessage* data)
|
||||
|
@ -27,18 +27,26 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_VoiceData_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_VoiceData* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
data->fromClientIndex = reader.ReadUInt32("fromClientIndex");
|
||||
data->proximity = reader.ReadBool("proximity");
|
||||
data->dataLengthInBits = reader.ReadUInt32("dataLengthInBits");
|
||||
data->data.reset(new uint8_t[math::BitsToBytes(data->dataLengthInBits)]);
|
||||
reader.ReadBits("data", data->data.get(), data->dataLengthInBits);
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_VoiceData_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_VoiceData* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_voicedata");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteUInt32("fromClientIndex", data->fromClientIndex);
|
||||
jsonbuf.WriteBool("proximity", data->proximity);
|
||||
jsonbuf.WriteUInt32("dataLengthInBits", data->dataLengthInBits);
|
||||
jsonbuf.WriteBits("data", data->data.get(), data->dataLengthInBits);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_VoiceData_ToString_Internal(std::ostringstream& out, NetMsg::SVC_VoiceData* data)
|
||||
|
@ -21,16 +21,21 @@ namespace NetHandlers
|
||||
|
||||
bool SVC_VoiceInit_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::SVC_VoiceInit* data)
|
||||
{
|
||||
return true;
|
||||
base::JsonReaderObject reader = jsonbuf.ParseObject();
|
||||
assert(!reader.HasReadError());
|
||||
reader.ReadString("voiceCodec", data->voiceCodec, sizeof(data->voiceCodec));
|
||||
data->quality = reader.ReadUInt32("quality");
|
||||
return !reader.HasReadError();
|
||||
}
|
||||
|
||||
bool SVC_VoiceInit_JsonWrite_Internal(JsonWrite& jsonbuf, const SourceGameContext& context, NetMsg::SVC_VoiceInit* data)
|
||||
{
|
||||
jsonbuf.StartObject("svc_voiceinit");
|
||||
jsonbuf.Reset();
|
||||
jsonbuf.StartObject();
|
||||
jsonbuf.WriteString("voiceCodec", data->voiceCodec);
|
||||
jsonbuf.WriteUInt32("quality", data->quality);
|
||||
jsonbuf.EndObject();
|
||||
return true;
|
||||
return jsonbuf.IsComplete();
|
||||
}
|
||||
|
||||
void SVC_VoiceInit_ToString_Internal(std::ostringstream& out, NetMsg::SVC_VoiceInit* data)
|
||||
|
Reference in New Issue
Block a user