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.
83 lines
2.4 KiB
83 lines
2.4 KiB
//========= 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
|
|
|