source-engine/game/server/hl2/grenade_tripwire.h

81 lines
1.7 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
//========= 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