Linking fixes, added game context var

This commit is contained in:
Jordan Cristiano 2015-05-14 22:02:29 -04:00
parent 90d39bc498
commit e13608fcd6
2 changed files with 18 additions and 23 deletions

View File

@ -15,7 +15,7 @@ typedef bool (*NetMsgReadFn)(bf_read& bitbuf, SourceGameContext& context, void*
static const NetMsgReadFn netHandlers[] = DECLARE_NET_HANDLER_ARRAY(BitRead);
//static const void* netDataStructs[] = DECLARE_NET_DATA_ARRAY;
void ParsePacket(uint8_t* packet, size_t length, IDemoWriter* writer)
void ParsePacket(uint8_t* packet, size_t length, SourceGameContext& context, IDemoWriter* writer)
{
assert(length <= NET_MAX_PAYLOAD);
bf_read bitbuf(packet, length);
@ -24,12 +24,21 @@ void ParsePacket(uint8_t* packet, size_t length, IDemoWriter* writer)
{
netPacket.type = bitbuf.ReadUBitLong(NETMSG_TYPE_BITS);
//netPacket.data = netDataStructs[netPacket.type];
//netHandlers[netPacket.type](bitbuf, context, );
netHandlers[netPacket.type](bitbuf, context, nullptr);
}
}
void ParseDemo(DemoFileReader& reader, IDemoWriter* writer)
void DemoReader::ProcessDem(void* inputFp, IDemoWriter* writer)
{
SourceGameContext context;
DemoFileReader reader(reinterpret_cast<FILE*>(inputFp));
{
demoheader_t header;
reader.ReadDemoHeader(header);
writer->StartWriting(header);
context.protocol = header.networkprotocol;
}
democmdinfo_t cmdInfo;
CommandPacket packet;
packet.cmdInfo = &cmdInfo;
@ -77,20 +86,9 @@ void ParseDemo(DemoFileReader& reader, IDemoWriter* writer)
writer->StartCommandPacket(packet);
if (packet.cmd == dem_packet || packet.cmd == dem_signon)
{
ParsePacket(buffer.data(), buffer.size(), writer);
ParsePacket(buffer.data(), buffer.size(), context, writer);
}
writer->EndCommandPacket();
} while (packet.cmd != dem_stop);
}
void DemoReader::ProcessDem(void* inputFp, IDemoWriter* writer)
{
DemoFileReader demoFile(reinterpret_cast<FILE*>(inputFp));
{
demoheader_t header;
demoFile.ReadDemoHeader(header);
writer->StartWriting(header);
}
ParseDemo(demoFile, writer);
writer->EndWriting();
}

View File

@ -21,14 +21,11 @@ struct SourceGameContext
#define DECLARE_NET_HANDLERS(msgname) \
namespace NetHandlers \
{ \
namespace \
{ \
bool msgname##_BitRead_Internal(bf_read& bitbuf, SourceGameContext& context, NetMsg::##msgname* data); \
bool msgname##_BitWrite_Internal(bf_write& bitbuf, SourceGameContext& context, NetMsg::##msgname* data); \
bool msgname##_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::##msgname* data); \
bool msgname##_JsonWrite_Internal(JsonWrite& jsonbuf, SourceGameContext& context, NetMsg::##msgname* data); \
void msgname##_ToString_Internal(std::ostringstream& out, NetMsg::##msgname* data); \
} \
bool msgname##_BitRead_Internal(bf_read& bitbuf, SourceGameContext& context, NetMsg::##msgname* data); \
bool msgname##_BitWrite_Internal(bf_write& bitbuf, SourceGameContext& context, NetMsg::##msgname* data); \
bool msgname##_JsonRead_Internal(JsonRead& jsonbuf, SourceGameContext& context, NetMsg::##msgname* data); \
bool msgname##_JsonWrite_Internal(JsonWrite& jsonbuf, SourceGameContext& context, NetMsg::##msgname* data); \
void msgname##_ToString_Internal(std::ostringstream& out, NetMsg::##msgname* data); \
inline bool msgname##_BitRead(bf_read& bitbuf, SourceGameContext& context, void* data) \
{ \
return msgname##_BitRead_Internal(bitbuf, context, reinterpret_cast<NetMsg::##msgname*>(data)); \