105 lines
2.5 KiB
C++
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
|