This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

105 lines
2.5 KiB
C++

//========= 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