diff options
Diffstat (limited to '')
-rw-r--r-- | src/weapons/CProjectileInfo.cpp | 10 | ||||
-rw-r--r-- | src/weapons/CProjectileInfo.h | 20 | ||||
-rw-r--r-- | src/weapons/ProjectileInfo.cpp | 7 | ||||
-rw-r--r-- | src/weapons/ProjectileInfo.h | 9 | ||||
-rw-r--r-- | src/weapons/Weapon.cpp | 1 | ||||
-rw-r--r-- | src/weapons/Weapon.h | 1 |
6 files changed, 48 insertions, 0 deletions
diff --git a/src/weapons/CProjectileInfo.cpp b/src/weapons/CProjectileInfo.cpp new file mode 100644 index 00000000..f3c78ed8 --- /dev/null +++ b/src/weapons/CProjectileInfo.cpp @@ -0,0 +1,10 @@ +#include "CProjectileInfo.h" + +CProjectileInfo *gaProjectileInfo = (CProjectileInfo *)0x64ED50; +CProjectileInfo *CProjectileInfo::ms_apProjectile = (CProjectileInfo *)0x87C748; + +CProjectileInfo * +CProjectileInfo::GetProjectileInfo(int32 id) +{ + return &gaProjectileInfo[id]; +} diff --git a/src/weapons/CProjectileInfo.h b/src/weapons/CProjectileInfo.h new file mode 100644 index 00000000..426d25f1 --- /dev/null +++ b/src/weapons/CProjectileInfo.h @@ -0,0 +1,20 @@ +#pragma once + +#include "Object.h" +#include "Weapon.h" + +struct CProjectileInfo : public CObject { + eWeaponType m_eWeaponType; + CEntity *m_pSource; + int m_nExplosionTime; + char m_bInUse; + char field_13; + char field_14; + char field_15; + CVector m_vecPos; + + static CProjectileInfo *GetProjectileInfo(int32 id); + static CProjectileInfo *ms_apProjectile; +}; + +extern CProjectileInfo *gaProjectileInfo;
\ No newline at end of file diff --git a/src/weapons/ProjectileInfo.cpp b/src/weapons/ProjectileInfo.cpp new file mode 100644 index 00000000..50d75516 --- /dev/null +++ b/src/weapons/ProjectileInfo.cpp @@ -0,0 +1,7 @@ +#include "common.h" +#include "patcher.h" +#include "ProjectileInfo.h" +#include "Projectile.h" + + +WRAPPER bool CProjectileInfo::RemoveIfThisIsAProjectile(CObject *pObject) { EAXJMP(0x55BBD0); }
\ No newline at end of file diff --git a/src/weapons/ProjectileInfo.h b/src/weapons/ProjectileInfo.h new file mode 100644 index 00000000..f4753b28 --- /dev/null +++ b/src/weapons/ProjectileInfo.h @@ -0,0 +1,9 @@ +#pragma once
+
+class CObject;
+
+class CProjectileInfo
+{
+public:
+ static bool RemoveIfThisIsAProjectile(CObject *pObject);
+};
\ No newline at end of file diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp index 3f511358..860e3ab2 100644 --- a/src/weapons/Weapon.cpp +++ b/src/weapons/Weapon.cpp @@ -6,6 +6,7 @@ #include "Ped.h" #include "World.h" +WRAPPER void CWeapon::UpdateWeapons(void) { EAXJMP(0x55C310); } WRAPPER bool CWeapon::Fire(CEntity*, CVector*) { EAXJMP(0x55C380); } WRAPPER void CWeapon::FireFromCar(CAutomobile *car, bool left) { EAXJMP(0x55C940); } WRAPPER void CWeapon::AddGunshell(CEntity*, CVector const&, CVector2D const&, float) { EAXJMP(0x55F770); } diff --git a/src/weapons/Weapon.h b/src/weapons/Weapon.h index 2f277c62..1663ee0d 100644 --- a/src/weapons/Weapon.h +++ b/src/weapons/Weapon.h @@ -73,5 +73,6 @@ public: static void DoTankDoomAiming(CEntity *playerVehicle, CEntity *playerPed, CVector *start, CVector *end); bool HitsGround(CEntity* holder, CVector* firePos, CEntity* aimingTo); static void InitialiseWeapons(void); + static void UpdateWeapons(void); }; static_assert(sizeof(CWeapon) == 0x18, "CWeapon: error"); |