diff options
Diffstat (limited to 'mp/src/game/server/hl2/grenade_homer.h')
| -rw-r--r-- | mp/src/game/server/hl2/grenade_homer.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/mp/src/game/server/hl2/grenade_homer.h b/mp/src/game/server/hl2/grenade_homer.h new file mode 100644 index 00000000..75bdbbce --- /dev/null +++ b/mp/src/game/server/hl2/grenade_homer.h @@ -0,0 +1,83 @@ +//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Projectile shot by city scanner
+//
+// $Workfile: $
+// $Date: $
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef GRENADEHOMER_H
+#define GRENADEHOMER_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "basegrenade_shared.h"
+#include "weapon_rpg.h"
+
+enum HomerRocketTrail_t
+{
+ HOMER_SMOKE_TRAIL_OFF, // No smoke trail
+ HOMER_SMOKE_TRAIL_ON, // Smoke trail always on
+ HOMER_SMOKE_TRAIL_ON_HOMING, // Smoke trail on when homing turned on
+ HOMER_SMOKE_TRAIL_ALIEN, // Alien colors on smoke trail
+};
+
+class CGrenadeHomer : public CBaseGrenade
+{
+public:
+ DECLARE_CLASS( CGrenadeHomer, CBaseGrenade );
+
+ static CGrenadeHomer* CreateGrenadeHomer( string_t nModelName, string_t sFlySound, const Vector &vecOrigin, const QAngle &vecAngles, edict_t *pentOwner );
+
+ virtual void Precache( void );
+ void Spawn( void );
+ void Launch( CBaseEntity *pOwner, CBaseEntity *pTarget, const Vector &vInitVelocity, float m_flHomingSpeed, float fFallSpeed, int nRocketTrailType);
+ void SetSpin(float flSpinMagnitude, float flSpinSpeed);
+ void SetHoming(float flStrength, float flDelay, float flRampUp, float flDuration, float flRampDown);
+
+ CHandle<RocketTrail> m_hRocketTrail[3];
+
+private:
+ string_t m_sFlySound;
+ float m_flNextFlySoundTime;
+
+ // Input Parameters
+ float m_flHomingStrength;
+ float m_flHomingDelay; // How long before homing starts
+ float m_flHomingRampUp; // How long it take to reach full strength
+ float m_flHomingDuration; // How long does homing last
+ float m_flHomingRampDown; // How long to reach no homing again
+ float m_flHomingSpeed;
+ float m_flSpinMagnitude;
+ float m_flSpinSpeed;
+ int m_nRocketTrailType;
+ int m_spriteTexture;
+
+ // In flight data
+ float m_flHomingLaunchTime;
+ float m_flHomingStartTime;
+ float m_flHomingEndTime;
+ float m_flSpinOffset; // For randomization
+
+ EHANDLE m_hTarget;
+
+ void AimThink( void );
+ void StartRocketTrail(void);
+ void UpdateRocketTrail(float fScale);
+ void StopRocketTrail(void);
+ void PlayFlySound( void );
+ void GrenadeHomerTouch( CBaseEntity *pOther );
+ void Event_Killed( const CTakeDamageInfo &info );
+ int OnTakeDamage( const CTakeDamageInfo &info );
+
+public:
+ void EXPORT Detonate(void);
+ CGrenadeHomer(void);
+
+ DECLARE_DATADESC();
+};
+
+#endif //GRENADEHOMER_H
|