Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add PF_Message(Begin|End)_I, PF_Write*_I hooks #1019

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions rehlds/engine/pr_cmds.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2106,6 +2106,11 @@ sizebuf_t* EXT_FUNC WriteDest_Parm(int dest)
}

void EXT_FUNC PF_MessageBegin_I(int msg_dest, int msg_type, const float *pOrigin, edict_t *ed)
{
g_RehldsHookchains.m_PF_MessageBegin_I.callChain(PF_MessageBegin_I_internal, msg_dest, msg_type, pOrigin, ed);
}

void EXT_FUNC PF_MessageBegin_I_internal(int msg_dest, int msg_type, const float *pOrigin, edict_t *ed)
{
if (msg_dest == MSG_ONE || msg_dest == MSG_ONE_UNRELIABLE)
{
Expand Down Expand Up @@ -2147,6 +2152,11 @@ void EXT_FUNC PF_MessageBegin_I(int msg_dest, int msg_type, const float *pOrigin
}

void EXT_FUNC PF_MessageEnd_I(void)
{
g_RehldsHookchains.m_PF_MessageEnd_I.callChain(PF_MessageEnd_I_internal);
}

void EXT_FUNC PF_MessageEnd_I_internal(void)
{
qboolean MsgIsVarLength = 0;
if (!gMsgStarted)
Expand Down Expand Up @@ -2273,54 +2283,94 @@ void EXT_FUNC PF_MessageEnd_I(void)

void EXT_FUNC PF_WriteByte_I(int iValue)
{
g_RehldsHookchains.m_PF_WriteByte_I.callChain(PF_WriteByte_I_internal, iValue);
}

void EXT_FUNC PF_WriteByte_I_internal(int iValue)
{
if (!gMsgStarted)
Sys_Error("%s: called with no active message\n", __func__);
MSG_WriteByte(&gMsgBuffer, iValue);
}

void EXT_FUNC PF_WriteChar_I(int iValue)
{
g_RehldsHookchains.m_PF_WriteChar_I.callChain(PF_WriteChar_I_internal, iValue);
}

void EXT_FUNC PF_WriteChar_I_internal(int iValue)
{
if (!gMsgStarted)
Sys_Error("%s: called with no active message\n", __func__);
MSG_WriteChar(&gMsgBuffer, iValue);
}

void EXT_FUNC PF_WriteShort_I(int iValue)
{
g_RehldsHookchains.m_PF_WriteShort_I.callChain(PF_WriteShort_I_internal, iValue);
}

void EXT_FUNC PF_WriteShort_I_internal(int iValue)
{
if (!gMsgStarted)
Sys_Error("%s: called with no active message\n", __func__);
MSG_WriteShort(&gMsgBuffer, iValue);
}

void EXT_FUNC PF_WriteLong_I(int iValue)
{
g_RehldsHookchains.m_PF_WriteLong_I.callChain(PF_WriteLong_I_internal, iValue);
}

void EXT_FUNC PF_WriteLong_I_internal(int iValue)
{
if (!gMsgStarted)
Sys_Error("%s: called with no active message\n", __func__);
MSG_WriteLong(&gMsgBuffer, iValue);
}

void EXT_FUNC PF_WriteAngle_I(float flValue)
{
g_RehldsHookchains.m_PF_WriteAngle_I.callChain(PF_WriteAngle_I_internal, flValue);
}

void EXT_FUNC PF_WriteAngle_I_internal(float flValue)
{
if (!gMsgStarted)
Sys_Error("%s: called with no active message\n", __func__);
MSG_WriteAngle(&gMsgBuffer, flValue);
}

void EXT_FUNC PF_WriteCoord_I(float flValue)
{
g_RehldsHookchains.m_PF_WriteCoord_I.callChain(PF_WriteCoord_I_internal, flValue);
}

void EXT_FUNC PF_WriteCoord_I_internal(float flValue)
{
if (!gMsgStarted)
Sys_Error("%s: called with no active message\n", __func__);
MSG_WriteShort(&gMsgBuffer, (int)(flValue * 8.0));
}

void EXT_FUNC PF_WriteString_I(const char *sz)
{
g_RehldsHookchains.m_PF_WriteString_I.callChain(PF_WriteString_I_internal, sz);
}

void EXT_FUNC PF_WriteString_I_internal(const char *sz)
{
if (!gMsgStarted)
Sys_Error("%s: called with no active message\n", __func__);
MSG_WriteString(&gMsgBuffer, sz);
}

void EXT_FUNC PF_WriteEntity_I(int iValue)
{
g_RehldsHookchains.m_PF_WriteEntity_I.callChain(PF_WriteEntity_I_internal, iValue);
}

void EXT_FUNC PF_WriteEntity_I_internal(int iValue)
{
if (!gMsgStarted)
Sys_Error("%s: called with no active message\n", __func__);
Expand Down
10 changes: 10 additions & 0 deletions rehlds/engine/pr_cmds.h
Original file line number Diff line number Diff line change
Expand Up @@ -155,15 +155,25 @@ edict_t *CreateFakeClient_internal(const char *netname);
void PF_RunPlayerMove_I(edict_t *fakeclient, const float *viewangles, float forwardmove, float sidemove, float upmove, unsigned short buttons, unsigned char impulse, unsigned char msec);
sizebuf_t *WriteDest_Parm(int dest);
void PF_MessageBegin_I(int msg_dest, int msg_type, const float *pOrigin, edict_t *ed);
void PF_MessageBegin_I_internal(int msg_dest, int msg_type, const float *pOrigin, edict_t *ed);
void PF_MessageEnd_I(void);
void PF_MessageEnd_I_internal(void);
void PF_WriteByte_I(int iValue);
void PF_WriteByte_I_internal(int iValue);
void PF_WriteChar_I(int iValue);
void PF_WriteChar_I_internal(int iValue);
void PF_WriteShort_I(int iValue);
void PF_WriteShort_I_internal(int iValue);
void PF_WriteLong_I(int iValue);
void PF_WriteLong_I_internal(int iValue);
void PF_WriteAngle_I(float flValue);
void PF_WriteAngle_I_internal(float flValue);
void PF_WriteCoord_I(float flValue);
void PF_WriteCoord_I_internal(float flValue);
void PF_WriteString_I(const char *sz);
void PF_WriteString_I_internal(const char *sz);
void PF_WriteEntity_I(int iValue);
void PF_WriteEntity_I_internal(int iValue);
void PF_makestatic_I(edict_t *ent);
void PF_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex);
void PF_setspawnparms_I(edict_t *ent);
Expand Down
50 changes: 50 additions & 0 deletions rehlds/public/rehlds/rehlds_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,46 @@ typedef IVoidHookChainRegistry<const char *> IRehldsHookRegistry_SV_ClientPrintf
typedef IHookChain<bool, edict_t*, edict_t*> IRehldsHook_SV_AllowPhysent;
typedef IHookChainRegistry<bool, edict_t*, edict_t*> IRehldsHookRegistry_SV_AllowPhysent;

//PF_MessageBegin_I hook
typedef IVoidHookChain<int, int, const float *, edict_t *> IRehldsHook_PF_MessageBegin_I;
typedef IVoidHookChainRegistry<int, int, const float *, edict_t *> IRehldsHookRegistry_PF_MessageBegin_I;

//PF_MessageEnd_I hook
typedef IVoidHookChain<> IRehldsHook_PF_MessageEnd_I;
typedef IVoidHookChainRegistry<> IRehldsHookRegistry_PF_MessageEnd_I;

//PF_WriteByte_I hook
typedef IVoidHookChain<int> IRehldsHook_PF_WriteByte_I;
typedef IVoidHookChainRegistry<int> IRehldsHookRegistry_PF_WriteByte_I;

//PF_WriteChar_I hook
typedef IVoidHookChain<int> IRehldsHook_PF_WriteChar_I;
typedef IVoidHookChainRegistry<int> IRehldsHookRegistry_PF_WriteChar_I;

//PF_WriteShort_I hook
typedef IVoidHookChain<int> IRehldsHook_PF_WriteShort_I;
typedef IVoidHookChainRegistry<int> IRehldsHookRegistry_PF_WriteShort_I;

//PF_WriteLong_I hook
typedef IVoidHookChain<int> IRehldsHook_PF_WriteLong_I;
typedef IVoidHookChainRegistry<int> IRehldsHookRegistry_PF_WriteLong_I;

//PF_WriteAngle_I hook
typedef IVoidHookChain<float> IRehldsHook_PF_WriteAngle_I;
typedef IVoidHookChainRegistry<float> IRehldsHookRegistry_PF_WriteAngle_I;

//PF_WriteCoord_I hook
typedef IVoidHookChain<float> IRehldsHook_PF_WriteCoord_I;
typedef IVoidHookChainRegistry<float> IRehldsHookRegistry_PF_WriteCoord_I;

//PF_WriteString_I hook
typedef IVoidHookChain<const char *> IRehldsHook_PF_WriteString_I;
typedef IVoidHookChainRegistry<const char *> IRehldsHookRegistry_PF_WriteString_I;

//PF_WriteEntity_I hook
typedef IVoidHookChain<int> IRehldsHook_PF_WriteEntity_I;
typedef IVoidHookChainRegistry<int> IRehldsHookRegistry_PF_WriteEntity_I;

class IRehldsHookchains {
public:
virtual ~IRehldsHookchains() { }
Expand Down Expand Up @@ -318,6 +358,16 @@ class IRehldsHookchains {
virtual IRehldsHookRegistry_SV_AddResource* SV_AddResource() = 0;
virtual IRehldsHookRegistry_SV_ClientPrintf* SV_ClientPrintf() = 0;
virtual IRehldsHookRegistry_SV_AllowPhysent* SV_AllowPhysent() = 0;
virtual IRehldsHookRegistry_PF_MessageBegin_I* PF_MessageBegin_I() = 0;
virtual IRehldsHookRegistry_PF_MessageEnd_I* PF_MessageEnd_I() = 0;
virtual IRehldsHookRegistry_PF_WriteByte_I* PF_WriteByte_I() = 0;
virtual IRehldsHookRegistry_PF_WriteChar_I* PF_WriteChar_I() = 0;
virtual IRehldsHookRegistry_PF_WriteShort_I* PF_WriteShort_I() = 0;
virtual IRehldsHookRegistry_PF_WriteLong_I* PF_WriteLong_I() = 0;
virtual IRehldsHookRegistry_PF_WriteAngle_I* PF_WriteAngle_I() = 0;
virtual IRehldsHookRegistry_PF_WriteCoord_I* PF_WriteCoord_I() = 0;
virtual IRehldsHookRegistry_PF_WriteString_I* PF_WriteString_I() = 0;
virtual IRehldsHookRegistry_PF_WriteEntity_I* PF_WriteEntity_I() = 0;
};

struct RehldsFuncs_t {
Expand Down
40 changes: 40 additions & 0 deletions rehlds/rehlds/rehlds_api_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -885,6 +885,46 @@ IRehldsHookRegistry_SV_AllowPhysent* CRehldsHookchains::SV_AllowPhysent() {
return &m_SV_AllowPhysent;
}

IRehldsHookRegistry_PF_MessageBegin_I* CRehldsHookchains::PF_MessageBegin_I() {
return &m_PF_MessageBegin_I;
}

IRehldsHookRegistry_PF_MessageEnd_I* CRehldsHookchains::PF_MessageEnd_I() {
return &m_PF_MessageEnd_I;
}

IRehldsHookRegistry_PF_WriteByte_I* CRehldsHookchains::PF_WriteByte_I() {
return &m_PF_WriteByte_I;
}

IRehldsHookRegistry_PF_WriteChar_I* CRehldsHookchains::PF_WriteChar_I() {
return &m_PF_WriteChar_I;
}

IRehldsHookRegistry_PF_WriteShort_I* CRehldsHookchains::PF_WriteShort_I() {
return &m_PF_WriteShort_I;
}

IRehldsHookRegistry_PF_WriteLong_I* CRehldsHookchains::PF_WriteLong_I() {
return &m_PF_WriteLong_I;
}

IRehldsHookRegistry_PF_WriteAngle_I* CRehldsHookchains::PF_WriteAngle_I() {
return &m_PF_WriteAngle_I;
}

IRehldsHookRegistry_PF_WriteCoord_I* CRehldsHookchains::PF_WriteCoord_I() {
return &m_PF_WriteCoord_I;
}

IRehldsHookRegistry_PF_WriteString_I* CRehldsHookchains::PF_WriteString_I() {
return &m_PF_WriteString_I;
}

IRehldsHookRegistry_PF_WriteEntity_I* CRehldsHookchains::PF_WriteEntity_I() {
return &m_PF_WriteEntity_I;
}

int EXT_FUNC CRehldsApi::GetMajorVersion()
{
return REHLDS_API_VERSION_MAJOR;
Expand Down
60 changes: 60 additions & 0 deletions rehlds/rehlds/rehlds_api_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,46 @@ typedef IVoidHookChainRegistryImpl<const char*> CRehldsHookRegistry_SV_ClientPri
typedef IHookChainImpl<bool, edict_t*, edict_t*> CRehldsHook_SV_AllowPhysent;
typedef IHookChainRegistryImpl<bool, edict_t*, edict_t*> CRehldsHookRegistry_SV_AllowPhysent;

//PF_MessageBegin_I hook
typedef IVoidHookChain<int, int, const float *, edict_t *> CRehldsHook_PF_MessageBegin_I;
typedef IVoidHookChainRegistryImpl<int, int, const float *, edict_t *> CRehldsHookRegistry_PF_MessageBegin_I;

//PF_MessageEnd_I hook
typedef IVoidHookChain<> CRehldsHook_PF_MessageEnd_I;
typedef IVoidHookChainRegistryImpl<> CRehldsHookRegistry_PF_MessageEnd_I;

//PF_WriteByte_I hook
typedef IVoidHookChain<int> CRehldsHook_PF_WriteByte_I;
typedef IVoidHookChainRegistryImpl<int> CRehldsHookRegistry_PF_WriteByte_I;

//PF_WriteChar_I hook
typedef IVoidHookChain<int> CRehldsHook_PF_WriteChar_I;
typedef IVoidHookChainRegistryImpl<int> CRehldsHookRegistry_PF_WriteChar_I;

//PF_WriteShort_I hook
typedef IVoidHookChain<int> CRehldsHook_PF_WriteShort_I;
typedef IVoidHookChainRegistryImpl<int> CRehldsHookRegistry_PF_WriteShort_I;

//PF_WriteLong_I hook
typedef IVoidHookChain<int> CRehldsHook_PF_WriteLong_I;
typedef IVoidHookChainRegistryImpl<int> CRehldsHookRegistry_PF_WriteLong_I;

//PF_WriteAngle_I hook
typedef IVoidHookChain<float> CRehldsHook_PF_WriteAngle_I;
typedef IVoidHookChainRegistryImpl<float> CRehldsHookRegistry_PF_WriteAngle_I;

//PF_WriteCoord_I hook
typedef IVoidHookChain<float> CRehldsHook_PF_WriteCoord_I;
typedef IVoidHookChainRegistryImpl<float> CRehldsHookRegistry_PF_WriteCoord_I;

//PF_WriteString_I hook
typedef IVoidHookChain<const char *> CRehldsHook_PF_WriteString_I;
typedef IVoidHookChainRegistryImpl<const char *> CRehldsHookRegistry_PF_WriteString_I;

//PF_WriteEntity_I hook
typedef IVoidHookChain<int> CRehldsHook_PF_WriteEntity_I;
typedef IVoidHookChainRegistryImpl<int> CRehldsHookRegistry_PF_WriteEntity_I;

class CRehldsHookchains : public IRehldsHookchains {
public:
CRehldsHookRegistry_Steam_NotifyClientConnect m_Steam_NotifyClientConnect;
Expand Down Expand Up @@ -311,6 +351,16 @@ class CRehldsHookchains : public IRehldsHookchains {
CRehldsHookRegistry_SV_AddResource m_SV_AddResource;
CRehldsHookRegistry_SV_ClientPrintf m_SV_ClientPrintf;
CRehldsHookRegistry_SV_AllowPhysent m_SV_AllowPhysent;
CRehldsHookRegistry_PF_MessageBegin_I m_PF_MessageBegin_I;
CRehldsHookRegistry_PF_MessageEnd_I m_PF_MessageEnd_I;
CRehldsHookRegistry_PF_WriteByte_I m_PF_WriteByte_I;
CRehldsHookRegistry_PF_WriteChar_I m_PF_WriteChar_I;
CRehldsHookRegistry_PF_WriteShort_I m_PF_WriteShort_I;
CRehldsHookRegistry_PF_WriteLong_I m_PF_WriteLong_I;
CRehldsHookRegistry_PF_WriteAngle_I m_PF_WriteAngle_I;
CRehldsHookRegistry_PF_WriteCoord_I m_PF_WriteCoord_I;
CRehldsHookRegistry_PF_WriteString_I m_PF_WriteString_I;
CRehldsHookRegistry_PF_WriteEntity_I m_PF_WriteEntity_I;

public:
EXT_FUNC virtual IRehldsHookRegistry_Steam_NotifyClientConnect* Steam_NotifyClientConnect();
Expand Down Expand Up @@ -368,6 +418,16 @@ class CRehldsHookchains : public IRehldsHookchains {
EXT_FUNC virtual IRehldsHookRegistry_SV_AddResource* SV_AddResource();
EXT_FUNC virtual IRehldsHookRegistry_SV_ClientPrintf* SV_ClientPrintf();
EXT_FUNC virtual IRehldsHookRegistry_SV_AllowPhysent* SV_AllowPhysent();
EXT_FUNC virtual IRehldsHookRegistry_PF_MessageBegin_I* PF_MessageBegin_I();
EXT_FUNC virtual IRehldsHookRegistry_PF_MessageEnd_I* PF_MessageEnd_I();
EXT_FUNC virtual IRehldsHookRegistry_PF_WriteByte_I* PF_WriteByte_I();
EXT_FUNC virtual IRehldsHookRegistry_PF_WriteChar_I* PF_WriteChar_I();
EXT_FUNC virtual IRehldsHookRegistry_PF_WriteShort_I* PF_WriteShort_I();
EXT_FUNC virtual IRehldsHookRegistry_PF_WriteLong_I* PF_WriteLong_I();
EXT_FUNC virtual IRehldsHookRegistry_PF_WriteAngle_I* PF_WriteAngle_I();
EXT_FUNC virtual IRehldsHookRegistry_PF_WriteCoord_I* PF_WriteCoord_I();
EXT_FUNC virtual IRehldsHookRegistry_PF_WriteString_I* PF_WriteString_I();
EXT_FUNC virtual IRehldsHookRegistry_PF_WriteEntity_I* PF_WriteEntity_I();
};

extern CRehldsHookchains g_RehldsHookchains;
Expand Down
Loading