summaryrefslogtreecommitdiffstats
path: root/src/weapons
diff options
context:
space:
mode:
Diffstat (limited to 'src/weapons')
-rw-r--r--src/weapons/CProjectileInfo.cpp10
-rw-r--r--src/weapons/CProjectileInfo.h20
-rw-r--r--src/weapons/ProjectileInfo.cpp7
-rw-r--r--src/weapons/ProjectileInfo.h9
-rw-r--r--src/weapons/Weapon.cpp1
-rw-r--r--src/weapons/Weapon.h1
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");