diff options
Diffstat (limited to 'game/server/hl2/grenade_homer.h')
| -rw-r--r-- | game/server/hl2/grenade_homer.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/game/server/hl2/grenade_homer.h b/game/server/hl2/grenade_homer.h new file mode 100644 index 0000000..81ebcf9 --- /dev/null +++ b/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 |