aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/server/hl2/grenade_beam.h
diff options
context:
space:
mode:
Diffstat (limited to 'mp/src/game/server/hl2/grenade_beam.h')
-rw-r--r--mp/src/game/server/hl2/grenade_beam.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/mp/src/game/server/hl2/grenade_beam.h b/mp/src/game/server/hl2/grenade_beam.h
new file mode 100644
index 00000000..f8f37524
--- /dev/null
+++ b/mp/src/game/server/hl2/grenade_beam.h
@@ -0,0 +1,74 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Projectile shot by mortar synth
+//
+// $Workfile: $
+// $Date: $
+//
+//-----------------------------------------------------------------------------
+// $Log: $
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef GRENADEBEAM_H
+#define GRENADEBEAM_H
+
+#include "basegrenade_shared.h"
+
+#define GRENADEBEAM_MAXBEAMS 2
+#define GRENADEBEAM_MAXHITS GRENADEBEAM_MAXBEAMS-1
+
+class CGrenadeBeam;
+class CBeam;
+
+// End of the grenade beam
+class CGrenadeBeamChaser : public CBaseAnimating
+{
+public:
+ DECLARE_CLASS( CGrenadeBeamChaser, CBaseAnimating );
+ DECLARE_DATADESC();
+
+ static CGrenadeBeamChaser* ChaserCreate( CGrenadeBeam *pTarget );
+
+ void Spawn( void );
+ void ChaserThink();
+
+ CGrenadeBeam* m_pTarget;
+};
+
+class CGrenadeBeam : public CBaseGrenade
+{
+public:
+ DECLARE_CLASS( CGrenadeBeam, CBaseGrenade );
+ DECLARE_DATADESC();
+
+ static CGrenadeBeam* Create( CBaseEntity* pOwner, const Vector &vStart);
+
+public:
+ void Spawn( void );
+ void Precache( void );
+ void Format( color32 clrColor, float flWidth);
+ void GrenadeBeamTouch( CBaseEntity *pOther );
+ void KillBeam();
+ void CreateBeams(void);
+ void UpdateBeams(void);
+ //void DebugBeams(void);
+ void GetChaserTargetPos(Vector *vPosition);
+ void GetNextTargetPos(Vector *vPosition);
+ int UpdateTransmitState(void);
+ void Shoot(Vector vDirection, float flSpeed, float flLifetime, float flLag, float flDamage );
+
+ Vector m_vLaunchPos;
+ float m_flBeamWidth;
+ float m_flBeamSpeed;
+ float m_flBeamLag;
+ float m_flLaunchTime;
+ float m_flLastTouchTime;
+ EHANDLE m_hBeamChaser;
+ int m_nNumHits;
+ Vector m_pHitLocation[GRENADEBEAM_MAXHITS];
+ CBeam* m_pBeam[GRENADEBEAM_MAXBEAMS];
+};
+
+#endif //GRENADEBEAM_H