Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.

107 lines
2.4 KiB

5 years ago
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#include "basehlcombatweapon.h"
#include "soundenvelope.h"
#ifndef WEAPON_FLAREGUN_H
#define WEAPON_FLAREGUN_H
#ifdef _WIN32
#pragma once
#endif
#define SF_FLARE_NO_DLIGHT 0x00000001
#define SF_FLARE_NO_SMOKE 0x00000002
#define SF_FLARE_INFINITE 0x00000004
#define SF_FLARE_START_OFF 0x00000008
#define FLARE_DURATION 30.0f
#define FLARE_DECAY_TIME 10.0f
#define FLARE_BLIND_TIME 6.0f
//---------------------
// Flare
//---------------------
class CFlare : public CBaseCombatCharacter
{
public:
DECLARE_CLASS( CFlare, CBaseCombatCharacter );
CFlare();
~CFlare();
static CFlare * GetActiveFlares( void );
CFlare * GetNextFlare( void ) const { return m_pNextFlare; }
static CFlare *Create( Vector vecOrigin, QAngle vecAngles, CBaseEntity *pOwner, float lifetime );
virtual unsigned int PhysicsSolidMaskForEntity( void ) const;
void Spawn( void );
void Precache( void );
int Restore( IRestore &restore );
void Activate( void );
void StartBurnSound( void );
void Start( float lifeTime );
void Die( float fadeTime );
void Launch( const Vector &direction, float speed );
Class_T Classify( void );
void FlareTouch( CBaseEntity *pOther );
void FlareBurnTouch( CBaseEntity *pOther );
void FlareThink( void );
void InputStart( inputdata_t &inputdata );
void InputDie( inputdata_t &inputdata );
void InputLaunch( inputdata_t &inputdata );
DECLARE_SERVERCLASS();
DECLARE_DATADESC();
static CFlare *activeFlares;
CBaseEntity *m_pOwner;
int m_nBounces; // how many times has this flare bounced?
CNetworkVar( float, m_flTimeBurnOut ); // when will the flare burn out?
CNetworkVar( float, m_flScale );
float m_flDuration;
float m_flNextDamage;
CSoundPatch *m_pBurnSound;
bool m_bFading;
CNetworkVar( bool, m_bLight );
CNetworkVar( bool, m_bSmoke );
CNetworkVar( bool, m_bPropFlare );
bool m_bInActiveList;
CFlare * m_pNextFlare;
void RemoveFromActiveFlares( void );
void AddToActiveFlares( void );
};
//---------------------
// Flaregun
//---------------------
class CFlaregun:public CBaseHLCombatWeapon
{
public:
DECLARE_CLASS( CFlaregun, CBaseHLCombatWeapon );
DECLARE_SERVERCLASS();
void Precache( void );
void PrimaryAttack( void );
void SecondaryAttack( void );
};
#endif // WEAPON_FLAREGUN_H