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 NetMsgReadFn netHandlers[] = DECLARE_NET_HANDLER_ARRAY(BitRead);
//static const void* netDataStructs[] = DECLARE_NET_DATA_ARRAY; //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); assert(length <= NET_MAX_PAYLOAD);
bf_read bitbuf(packet, length); 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.type = bitbuf.ReadUBitLong(NETMSG_TYPE_BITS);
//netPacket.data = netDataStructs[netPacket.type]; //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; democmdinfo_t cmdInfo;
CommandPacket packet; CommandPacket packet;
packet.cmdInfo = &cmdInfo; packet.cmdInfo = &cmdInfo;
@ -77,20 +86,9 @@ void ParseDemo(DemoFileReader& reader, IDemoWriter* writer)
writer->StartCommandPacket(packet); writer->StartCommandPacket(packet);
if (packet.cmd == dem_packet || packet.cmd == dem_signon) if (packet.cmd == dem_packet || packet.cmd == dem_signon)
{ {
ParsePacket(buffer.data(), buffer.size(), writer); ParsePacket(buffer.data(), buffer.size(), context, writer);
} }
writer->EndCommandPacket(); writer->EndCommandPacket();
} while (packet.cmd != dem_stop); } 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(); writer->EndWriting();
} }

View File

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