You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.0 KiB
63 lines
2.0 KiB
#ifndef _DEFINED_ASW_SENTRY_TOP_FLAMER_H |
|
#define _DEFINED_ASW_SENTRY_TOP_FLAMER_H |
|
#pragma once |
|
|
|
#include "asw_sentry_top.h" |
|
|
|
class CASW_Sentry_Top_Flamer : public CASW_Sentry_Top |
|
{ |
|
public: |
|
DECLARE_CLASS( CASW_Sentry_Top_Flamer, CASW_Sentry_Top ); |
|
DECLARE_SERVERCLASS(); |
|
DECLARE_DATADESC(); |
|
|
|
|
|
CASW_Sentry_Top_Flamer( int projectileVelocity = 0 ); // zero actually means "default" |
|
// virtual ~CASW_Sentry_Top_Machinegun(); |
|
|
|
/// Override this because flamer-style turrets don't have discrete fire, |
|
/// but rather start and stop firing continuously. |
|
virtual void CheckFiring(); |
|
|
|
virtual float GetYawTo(CBaseEntity* pEnt); |
|
|
|
/// This emits one frame's worth of fire; it works differently |
|
/// from the single-shot fire on other turret types. |
|
virtual void Fire(); |
|
|
|
virtual void SetTopModel(); |
|
|
|
/// flamer turrets are on/off with their firing. |
|
virtual void StartFiring(); |
|
virtual void StopFiring(); |
|
/// True iff currently firing this frame. |
|
inline bool IsFiring() { return m_bFiring; }; |
|
|
|
int GetSentryDamage(); |
|
|
|
virtual ITraceFilter *GetVisibilityTraceFilter(); |
|
|
|
inline float GetProjectileVelocity() const { return m_nProjectileVelocity; } |
|
|
|
// Classification |
|
virtual Class_T Classify( void ) { return (Class_T) CLASS_ASW_SENTRY_FLAMER; } |
|
|
|
protected: |
|
/// Helper function for Fire() -- actually emit the "bullets" of flame or ice |
|
virtual void FireProjectiles( int numShotsToFire, |
|
const Vector &vecSrc, const Vector &vecAiming, const AngularImpulse &rotSpeed = AngularImpulse(0,0,720) ); |
|
|
|
CNetworkVar(bool, m_bFiring); |
|
CNetworkVar(float, m_flPitchHack); // just for a second to deal with stairs until I get proper pitch gimballing on base class |
|
|
|
float m_flLastFireTime; |
|
float m_flFireHysteresisTime; |
|
const int m_nProjectileVelocity; |
|
}; |
|
|
|
/// Compute the necessary trajectory for a projectile to hit a moving object. |
|
Vector ProjectileIntercept( const Vector &vProjectileOrigin, const float fProjectileVelocity, |
|
const Vector &vTargetOrigin, const Vector &vTargetDirection, |
|
float * RESTRICT pflTime = NULL ); |
|
|
|
#endif /* _DEFINED_ASW_SENTRY_TOP_FLAMER_H */ |