89 lines
2.7 KiB
C++
89 lines
2.7 KiB
C++
//========= 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
|