Fixing Projectile code

This commit is contained in:
Sergeanur
2020-01-07 17:26:23 +02:00
parent f9316d9cc3
commit f7e962beaa
8 changed files with 47 additions and 34 deletions

View File

@ -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];
}

View File

@ -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;

View File

@ -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];
}

View File

@ -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);
};
};
extern CProjectileInfo* gaProjectileInfo;