2019-07-09 12:50:35 -04:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
class CEntity;
|
2019-07-31 11:54:18 -04:00
|
|
|
class CVector;
|
2019-07-09 12:50:35 -04:00
|
|
|
|
|
|
|
enum eExplosionType
|
|
|
|
{
|
2019-07-25 10:33:37 -04:00
|
|
|
EXPLOSION_GRENADE,
|
|
|
|
EXPLOSION_MOLOTOV,
|
|
|
|
EXPLOSION_ROCKET,
|
|
|
|
EXPLOSION_CAR,
|
|
|
|
EXPLOSION_CAR_QUICK,
|
|
|
|
EXPLOSION_HELI,
|
|
|
|
EXPLOSION_MINE,
|
|
|
|
EXPLOSION_BARREL,
|
|
|
|
EXPLOSION_TANK_GRENADE,
|
|
|
|
EXPLOSION_HELI_BOMB
|
2019-07-09 12:50:35 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
class CExplosion
|
|
|
|
{
|
2020-03-12 12:26:47 -04:00
|
|
|
eExplosionType m_ExplosionType;
|
|
|
|
CVector m_vecPosition;
|
|
|
|
float m_fRadius;
|
|
|
|
float m_fPropagationRate;
|
|
|
|
CEntity *m_pCreatorEntity;
|
|
|
|
CEntity *m_pVictimEntity;
|
|
|
|
float m_fStopTime;
|
2020-04-08 15:29:02 -04:00
|
|
|
uint8 m_nIteration;
|
|
|
|
uint8 m_nActiveCounter;
|
|
|
|
float m_fStartTime;
|
2020-03-12 12:26:47 -04:00
|
|
|
uint32 m_nParticlesExpireTime;
|
|
|
|
float m_fPower;
|
2020-04-08 15:29:02 -04:00
|
|
|
bool m_bIsBoat;
|
|
|
|
float m_fZshift;
|
2019-07-09 12:50:35 -04:00
|
|
|
public:
|
2020-03-12 12:26:47 -04:00
|
|
|
static void Initialise();
|
|
|
|
static void Shutdown();
|
2019-07-31 11:54:18 -04:00
|
|
|
static int8 GetExplosionActiveCounter(uint8 id);
|
|
|
|
static void ResetExplosionActiveCounter(uint8 id);
|
2020-04-08 15:29:02 -04:00
|
|
|
static uint8 GetExplosionType(uint8 id);
|
|
|
|
static CVector *GetExplosionPosition(uint8 id);
|
|
|
|
static bool AddExplosion(CEntity *explodingEntity, CEntity *culprit, eExplosionType type, const CVector &pos, uint32 lifetime);
|
|
|
|
static void Update();
|
|
|
|
static bool TestForExplosionInArea(eExplosionType type, float x1, float x2, float y1, float y2, float z1, float z2);
|
|
|
|
static void RemoveAllExplosionsInArea(CVector pos, float radius);
|
2019-07-09 12:50:35 -04:00
|
|
|
};
|
2020-03-12 12:26:47 -04:00
|
|
|
|
2020-04-08 15:29:02 -04:00
|
|
|
extern CExplosion (&gaExplosion)[NUM_EXPLOSIONS];
|