//========= 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