summaryrefslogtreecommitdiff
path: root/src/weapons/Explosion.h
blob: e6ef9496f73fb99f90649be7dcb35dd694e87354 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#pragma once

class CEntity;
class CVector;

enum eExplosionType
{
	EXPLOSION_GRENADE,
	EXPLOSION_MOLOTOV,
	EXPLOSION_ROCKET,
	EXPLOSION_CAR,
	EXPLOSION_CAR_QUICK,
	EXPLOSION_HELI,
	EXPLOSION_MINE,
	EXPLOSION_BARREL,
	EXPLOSION_TANK_GRENADE,
	EXPLOSION_HELI_BOMB
};

class CExplosion
{
	eExplosionType m_ExplosionType;
	CVector m_vecPosition;
	float m_fRadius;
	float m_fPropagationRate;
	CEntity *m_pCreatorEntity;
	CEntity *m_pVictimEntity;
	float m_fStopTime;
	bool m_bActive;
	int8 m_bActiveCounter;
	int32 m_nStartTime;
	uint32 m_nParticlesExpireTime;
	float m_fPower;
	int32 field_34;
	int32 field_38;
public:
	static void Initialise();
	static void Shutdown();
	static void AddExplosion(CEntity *explodingEntity, CEntity *culprit, eExplosionType type,
	                         const CVector &pos, uint32);

	static int8 GetExplosionActiveCounter(uint8 id);
	static CVector *GetExplosionPosition(uint8 id);
	static uint8 GetExplosionType(uint8 id);
	static void ResetExplosionActiveCounter(uint8 id);
	static void RemoveAllExplosionsInArea(CVector, float);
	static bool TestForExplosionInArea(eExplosionType, float, float, float, float, float, float);
};

extern CExplosion (&gaExplosion)[48];