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.cpp9
-rw-r--r--src/weapons/ProjectileInfo.h20
4 files changed, 28 insertions, 31 deletions
diff --git a/src/weapons/CProjectileInfo.cpp b/src/weapons/CProjectileInfo.cpp
deleted file mode 100644
index f3c78ed8..00000000
--- a/src/weapons/CProjectileInfo.cpp
+++ /dev/null
@@ -1,10 +0,0 @@
-#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
deleted file mode 100644
index 426d25f1..00000000
--- a/src/weapons/CProjectileInfo.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#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
index 7919b8ab..efb9dab3 100644
--- a/src/weapons/ProjectileInfo.cpp
+++ b/src/weapons/ProjectileInfo.cpp
@@ -3,6 +3,15 @@
#include "ProjectileInfo.h"
#include "Projectile.h"
+CProjectileInfo* gaProjectileInfo = (CProjectileInfo*)0x64ED50;
+CProjectile* (&CProjectileInfo::ms_apProjectile)[32] = *(CProjectile*(*)[32])*(uintptr*)0x87C748;
+
WRAPPER void CProjectileInfo::RemoveAllProjectiles(void) { EAXJMP(0x55BB80); }
WRAPPER bool CProjectileInfo::RemoveIfThisIsAProjectile(CObject *pObject) { EAXJMP(0x55BBD0); }
WRAPPER bool CProjectileInfo::IsProjectileInRange(float x1, float x2, float y1, float y2, float z1, float z2, bool remove) { EAXJMP(0x55BA50); }
+
+CProjectileInfo*
+CProjectileInfo::GetProjectileInfo(int32 id)
+{
+ return &gaProjectileInfo[id];
+}
diff --git a/src/weapons/ProjectileInfo.h b/src/weapons/ProjectileInfo.h
index e1faf028..7a1b5b53 100644
--- a/src/weapons/ProjectileInfo.h
+++ b/src/weapons/ProjectileInfo.h
@@ -1,11 +1,29 @@
#pragma once
+class CEntity;
class CObject;
+class CProjectile;
+enum eWeaponType;
class CProjectileInfo
{
public:
+ eWeaponType m_eWeaponType;
+ CEntity* m_pSource;
+ int m_nExplosionTime;
+ char m_bInUse;
+ char field_13;
+ char field_14;
+ char field_15;
+ CVector m_vecPos;
+
+public:
+ static CProjectileInfo* GetProjectileInfo(int32 id);
+ static CProjectile* (&ms_apProjectile)[32];
+
static bool RemoveIfThisIsAProjectile(CObject *pObject);
static void RemoveAllProjectiles(void);
static bool IsProjectileInRange(float x1, float x2, float y1, float y2, float z1, float z2, bool remove);
-}; \ No newline at end of file
+};
+
+extern CProjectileInfo* gaProjectileInfo; \ No newline at end of file