r5sdk/r5dev/engine/client/datablock_receiver.h

57 lines
2.1 KiB
C
Raw Normal View History

//===========================================================================//
//
// Purpose: client side data block receiver
//
//===========================================================================//
#ifndef DATABLOCK_RECEIVER_H
#define DATABLOCK_RECEIVER_H
#include "engine/shared/datablock.h"
class CClientState;
class ClientDataBlockReceiver : public NetDataBlockReceiver
{
public:
virtual void AcknowledgeTransmission() override;
bool ProcessDataBlock(const double startTime, const short transferId, const int transferSize,
const short counter, const short currentBlockId, const void* const blockBuffer, const int blockBufferBytes);
};
struct ClientDataBlockHeader_s
{
char reserved[3]; // unused in retail
bool isCompressed;
};
// virtual methods
inline void*(*ClientDataBlockReceiver__AcknowledgeTransmission)(ClientDataBlockReceiver* thisptr);
// non-virtual methods
inline bool (*ClientDataBlockReceiver__ProcessDataBlock)(ClientDataBlockReceiver* thisptr, const double time,
const short transferId, const int transferSize, const short counter, const short currentBlockId,
const void* const blockBuffer, const int blockBufferBytes);
///////////////////////////////////////////////////////////////////////////////
class VClientDataBlockReceiver : public IDetour
{
virtual void GetAdr(void) const
{
LogFunAdr("ClientDataBlockReceiver::AcknowledgeTransmission", ClientDataBlockReceiver__AcknowledgeTransmission);
LogFunAdr("ClientDataBlockReceiver::ProcessDataBlock", ClientDataBlockReceiver__ProcessDataBlock);
}
virtual void GetFun(void) const
{
g_GameDll.FindPatternSIMD("40 53 48 81 EC ?? ?? ?? ?? 4C 8B 51 08").GetPtr(ClientDataBlockReceiver__AcknowledgeTransmission);
g_GameDll.FindPatternSIMD("48 89 5C 24 ?? 48 89 6C 24 ?? 48 89 74 24 ?? 48 89 7C 24 ?? 41 56 48 83 EC 30 0F B7 44 24 ??")
.GetPtr(ClientDataBlockReceiver__ProcessDataBlock);
}
virtual void GetVar(void) const { }
virtual void GetCon(void) const { }
virtual void Detour(const bool bAttach) const;
};
///////////////////////////////////////////////////////////////////////////////
#endif // DATABLOCK_RECEIVER_H