80 lines
1.7 KiB
C++
80 lines
1.7 KiB
C++
//========= 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
|