//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: Tripmine // // $Workfile: $ // $Date: $ // $NoKeywords: $ //=============================================================================// #ifndef TRIPWIRE_H #define TRIPWIRE_H #ifdef _WIN32 #pragma once #endif #include "basegrenade_shared.h" class CRopeKeyframe; // #################################################################### // CTripwireHook // // This is what the tripwire shoots out at the end of the rope // #################################################################### class CTripwireHook : public CBaseAnimating { DECLARE_DATADESC(); public: DECLARE_CLASS( CTripwireHook, CBaseAnimating ); EHANDLE m_hGrenade; bool m_bAttached; void Spawn( void ); void Precache( void ); bool CreateVPhysics( void ); void EndTouch( CBaseEntity *pOther ); void SetVelocity( const Vector &velocity, const AngularImpulse &angVelocity ); }; class CTripwireGrenade : public CBaseGrenade { public: DECLARE_CLASS( CTripwireGrenade, CBaseGrenade ); CTripwireGrenade(); void Spawn( void ); void Precache( void ); int OnTakeDamage_Alive( const CTakeDamageInfo &info ); void WarningThink( void ); void PowerupThink( void ); void RopeBreakThink( void ); void FireThink( void ); void Event_Killed( const CTakeDamageInfo &info ); void Attach( void ); void MakeRope( void ); void BreakRope( void ); void ShakeRope( void ); void FireMissile(const Vector &vTargetPos); private: float m_flPowerUp; Vector m_vecDir; int m_nMissileCount; Vector m_vTargetPos; Vector m_vTargetOffset; CRopeKeyframe* m_pRope; CTripwireHook* m_pHook; DECLARE_DATADESC(); }; #endif //TRIPWIRE_H