source-engine/game/server/hl2/grenade_homer.h

84 lines
2.4 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
//========= 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