mirror of
https://github.com/halpz/re3.git
synced 2025-07-03 07:10:43 +00:00
cleaned up patching of virtual functions; started CAutomobile
This commit is contained in:
@ -13,7 +13,14 @@ CCivilianPed::CCivilianPed(int pedtype, int mi) : CPed(pedtype)
|
||||
}
|
||||
}
|
||||
|
||||
class CCivilianPed_ : public CCivilianPed
|
||||
{
|
||||
public:
|
||||
CCivilianPed *ctor(int pedtype, int mi) { return ::new (this) CCivilianPed(pedtype, mi); };
|
||||
void dtor(void) { CCivilianPed::~CCivilianPed(); }
|
||||
};
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x4BFF30, &CCivilianPed::ctor, PATCH_JUMP);
|
||||
InjectHook(0x4BFFC0, &CCivilianPed::dtor, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
InjectHook(0x4BFF30, &CCivilianPed_::ctor, PATCH_JUMP);
|
||||
InjectHook(0x4BFFC0, &CCivilianPed_::dtor, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
|
@ -6,11 +6,8 @@ class CCivilianPed : public CPed
|
||||
{
|
||||
public:
|
||||
CCivilianPed(int, int);
|
||||
virtual ~CCivilianPed(void) { }
|
||||
~CCivilianPed(void) { }
|
||||
|
||||
virtual void ProcessControl(void);
|
||||
|
||||
CCivilianPed *ctor(int pedtype, int mi) { return ::new (this) CCivilianPed(pedtype, mi); };
|
||||
void dtor(void) { this->CCivilianPed::~CCivilianPed(); }
|
||||
void ProcessControl(void);
|
||||
};
|
||||
static_assert(sizeof(CCivilianPed) == 0x53C, "CCivilianPed: error");
|
||||
|
@ -9,6 +9,12 @@ CCopPed::~CCopPed()
|
||||
|
||||
WRAPPER void CCopPed::ClearPursuit(void) { EAXJMP(0x4C28C0); }
|
||||
|
||||
class CCopPed_ : public CCopPed
|
||||
{
|
||||
public:
|
||||
void dtor(void) { CCopPed::~CCopPed(); }
|
||||
};
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x4C13E0, &CCopPed::dtor, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
InjectHook(0x4C13E0, &CCopPed_::dtor, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
|
@ -65,7 +65,6 @@ public:
|
||||
int8 field_1367;
|
||||
|
||||
~CCopPed();
|
||||
void dtor(void) { this->CCopPed::~CCopPed(); }
|
||||
|
||||
void ClearPursuit(void);
|
||||
};
|
||||
|
@ -2,6 +2,12 @@
|
||||
#include "patcher.h"
|
||||
#include "EmergencyPed.h"
|
||||
|
||||
class CEmergencyPed_ : public CEmergencyPed
|
||||
{
|
||||
public:
|
||||
void dtor(void) { CEmergencyPed::~CEmergencyPed(); }
|
||||
};
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x4C2EF0, &CEmergencyPed::dtor, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
InjectHook(0x4C2EF0, &CEmergencyPed_::dtor, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
|
@ -7,7 +7,5 @@ class CEmergencyPed : public CPed
|
||||
public:
|
||||
// 0x53C
|
||||
uint8 stuff[24];
|
||||
|
||||
void dtor(void) { this->CEmergencyPed::~CEmergencyPed(); }
|
||||
};
|
||||
static_assert(sizeof(CEmergencyPed) == 0x554, "CEmergencyPed: error");
|
||||
|
@ -2893,9 +2893,28 @@ WRAPPER void CPed::PedLandCB(CAnimBlendAssociation *assoc, void *arg) { EAXJMP(0
|
||||
WRAPPER void FinishFuckUCB(CAnimBlendAssociation *assoc, void *arg) { EAXJMP(0x4C6580); }
|
||||
WRAPPER void CPed::RestoreHeadingRateCB(CAnimBlendAssociation *assoc, void *arg) { EAXJMP(0x4D6550); }
|
||||
|
||||
class CPed_ : public CPed
|
||||
{
|
||||
public:
|
||||
CPed* ctor(uint32 pedType) { return ::new (this) CPed(pedType); }
|
||||
void dtor(void) { CPed::~CPed(); }
|
||||
|
||||
void SetModelIndex_(uint32 mi) { CPed::SetModelIndex(mi); }
|
||||
void FlagToDestroyWhenNextProcessed_(void) { CPed::FlagToDestroyWhenNextProcessed(); }
|
||||
bool SetupLighting_(void) { return CPed::SetupLighting(); }
|
||||
void RemoveLighting_(bool reset) { CPed::RemoveLighting(reset); }
|
||||
void Teleport_(CVector pos) { CPed::Teleport(pos); }
|
||||
};
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x4C41C0, &CPed::ctor, PATCH_JUMP);
|
||||
InjectHook(0x4C50D0, &CPed::dtor, PATCH_JUMP);
|
||||
InjectHook(0x4C41C0, &CPed_::ctor, PATCH_JUMP);
|
||||
InjectHook(0x4C50D0, &CPed_::dtor, PATCH_JUMP);
|
||||
InjectHook(0x4C52A0, &CPed_::SetModelIndex_, PATCH_JUMP);
|
||||
InjectHook(0x4D6570, &CPed_::FlagToDestroyWhenNextProcessed_, PATCH_JUMP);
|
||||
InjectHook(0x4A7D30, &CPed_::SetupLighting_, PATCH_JUMP);
|
||||
InjectHook(0x4A7DC0, &CPed_::RemoveLighting_, PATCH_JUMP);
|
||||
InjectHook(0x4D3E70, &CPed_::Teleport_, PATCH_JUMP);
|
||||
|
||||
InjectHook(0x4CF8F0, &CPed::AddWeaponModel, PATCH_JUMP);
|
||||
InjectHook(0x4C6AA0, &CPed::AimGun, PATCH_JUMP);
|
||||
InjectHook(0x4EB470, &CPed::ApplyHeadShot, PATCH_JUMP);
|
||||
@ -2926,11 +2945,6 @@ STARTPATCHES
|
||||
InjectHook(0x4CC6C0, &CPed::PlayFootSteps, PATCH_JUMP);
|
||||
InjectHook(0x4C5350, &CPed::BuildPedLists, PATCH_JUMP);
|
||||
InjectHook(0x4CF9B0, &CPed::GiveWeapon, PATCH_JUMP);
|
||||
InjectHook(0x4C52A0, &CPed::SetModelIndex_, PATCH_JUMP);
|
||||
InjectHook(0x4D6570, &CPed::FlagToDestroyWhenNextProcessed_, PATCH_JUMP);
|
||||
InjectHook(0x4A7D30, &CPed::SetupLighting_, PATCH_JUMP);
|
||||
InjectHook(0x4A7DC0, &CPed::RemoveLighting_, PATCH_JUMP);
|
||||
InjectHook(0x4D3E70, &CPed::Teleport_, PATCH_JUMP);
|
||||
InjectHook(0x4C7EA0, &CPed::CalculateNewOrientation, PATCH_JUMP);
|
||||
InjectHook(0x4C78F0, &CPed::WorkOutHeadingForMovingFirstPerson, PATCH_JUMP);
|
||||
InjectHook(0x4C73F0, &CPed::CalculateNewVelocity, PATCH_JUMP);
|
||||
|
@ -399,22 +399,20 @@ public:
|
||||
static void operator delete(void*, int);
|
||||
|
||||
CPed(uint32 pedType);
|
||||
virtual ~CPed(void);
|
||||
~CPed(void);
|
||||
|
||||
void SetModelIndex(uint32 mi);
|
||||
void ProcessControl(void);
|
||||
void Teleport(CVector);
|
||||
void PreRender(void);
|
||||
void Render(void);
|
||||
bool SetupLighting(void);
|
||||
void RemoveLighting(bool);
|
||||
void FlagToDestroyWhenNextProcessed(void);
|
||||
int32 ProcessEntityCollision(CEntity*, CColPoint*);
|
||||
|
||||
virtual void SetModelIndex(uint32 mi);
|
||||
virtual void ProcessControl(void);
|
||||
virtual void Teleport(CVector);
|
||||
virtual void PreRender(void);
|
||||
virtual void Render(void);
|
||||
virtual bool SetupLighting(void);
|
||||
virtual void RemoveLighting(bool);
|
||||
virtual void FlagToDestroyWhenNextProcessed(void);
|
||||
virtual int32 ProcessEntityCollision(CEntity*, CColPoint*);
|
||||
virtual void SetMoveAnim(void);
|
||||
|
||||
CPed* ctor(uint32 pedType) { return ::new (this) CPed(pedType); }
|
||||
void dtor(void) { this->CPed::~CPed(); }
|
||||
|
||||
void AddWeaponModel(int id);
|
||||
void AimGun(void);
|
||||
void KillPedWithCar(CVehicle *veh, float impulse);
|
||||
@ -465,7 +463,7 @@ public:
|
||||
void RegisterThreatWithGangPeds(CEntity*);
|
||||
bool TurnBody(void);
|
||||
void Chat(void);
|
||||
void MakeChangesForNewWeapon(int8);
|
||||
void MakeChangesForNewWeapon(int8);
|
||||
|
||||
|
||||
// Static methods
|
||||
@ -545,13 +543,6 @@ public:
|
||||
PedState GetPedState(void) { return m_nPedState; }
|
||||
void SetPedState(PedState state) { m_nPedState = state; }
|
||||
|
||||
// to make patching virtual functions possible
|
||||
void SetModelIndex_(uint32 mi) { CPed::SetModelIndex(mi); }
|
||||
void FlagToDestroyWhenNextProcessed_(void) { CPed::FlagToDestroyWhenNextProcessed(); }
|
||||
bool SetupLighting_(void) { return CPed::SetupLighting(); }
|
||||
void RemoveLighting_(bool reset) { CPed::RemoveLighting(reset); }
|
||||
void Teleport_(CVector pos) { CPed::Teleport(pos); }
|
||||
|
||||
// set by 0482:set_threat_reaction_range_multiplier opcode
|
||||
static uint16 &distanceMultToCountPedNear;
|
||||
|
||||
|
@ -21,8 +21,13 @@ void CPlayerPed::ClearWeaponTarget()
|
||||
ClearPointGunAt();
|
||||
}
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x4EFB30, &CPlayerPed::dtor, PATCH_JUMP);
|
||||
InjectHook(0x4F28A0, &CPlayerPed::ClearWeaponTarget, PATCH_JUMP);
|
||||
class CPlayerPed_ : public CPlayerPed
|
||||
{
|
||||
public:
|
||||
void dtor(void) { CPlayerPed::~CPlayerPed(); }
|
||||
};
|
||||
|
||||
ENDPATCHES
|
||||
STARTPATCHES
|
||||
InjectHook(0x4EFB30, &CPlayerPed_::dtor, PATCH_JUMP);
|
||||
InjectHook(0x4F28A0, &CPlayerPed::ClearWeaponTarget, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
|
@ -41,7 +41,6 @@ public:
|
||||
|
||||
~CPlayerPed();
|
||||
|
||||
void dtor(void) { this->CPlayerPed::~CPlayerPed(); }
|
||||
void ReApplyMoveAnims(void);
|
||||
void ClearWeaponTarget();
|
||||
};
|
||||
|
Reference in New Issue
Block a user