Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================
#ifndef TF_WEAPON_FLAREGUN_H
#define TF_WEAPON_FLAREGUN_H
#ifdef _WIN32
#pragma once
#endif
#include "tf_weaponbase_gun.h"
#ifdef GAME_DLL
#include "tf_projectile_flare.h"
#endif
// Client specific.
#ifdef CLIENT_DLL
#define CTFFlareGun C_TFFlareGun
#define CTFFlareGun_Revenge C_TFFlareGun_Revenge
#endif
enum FlareGunTypes_t { FLAREGUN_NORMAL = 0, FLAREGUN_DETONATE, FLAREGUN_GRORDBORT, FLAREGUN_SCORCHSHOT };
//=============================================================================
//
// TF Weapon Flare gun.
//
class CTFFlareGun : public CTFWeaponBaseGun { public:
DECLARE_CLASS( CTFFlareGun, CTFWeaponBaseGun ); DECLARE_NETWORKCLASS(); DECLARE_PREDICTABLE();
// Server specific.
#ifdef GAME_DLL
DECLARE_DATADESC(); #endif
CTFFlareGun(); ~CTFFlareGun();
virtual void Precache(); virtual void DestroySounds( void );
virtual int GetWeaponID( void ) const { return TF_WEAPON_FLAREGUN; } virtual void PrimaryAttack(); virtual void SecondaryAttack();
virtual bool Holster( CBaseCombatWeapon *pSwitchingTo ); virtual bool Deploy( void ); virtual void ItemPostFrame( void ); virtual void WeaponReset( void );
int GetFlareGunType( void ) const { int iMode = 0; CALL_ATTRIB_HOOK_INT( iMode, set_weapon_mode ); return iMode; }
#ifdef GAME_DLL
void AddFlare( CTFProjectile_Flare *pFlare ); void DeathNotice( CBaseEntity *pVictim ); void DetonateFlare( void ); #endif
virtual void StartCharge( void ); virtual void StopCharge( void ); virtual void ChargePostFrame( void ) {} // Derived weapons can figure out what to do with this
virtual const char* GetChargeEffect( void ) const { return "drg_cowmangler_muzzleflash_chargeup"; }
float GetChargeBeginTime( void ) const { return m_flChargeBeginTime; }
protected:
#ifdef GAME_DLL
typedef CHandle<CTFProjectile_Flare> FlareHandle; CUtlVector <FlareHandle> m_Flares; int m_iFlareCount; #endif
protected: void StartChargeStartTime() { m_flChargeBeginTime = gpGlobals->curtime; }
#ifdef CLIENT_DLL
virtual void DispatchMuzzleFlash( const char* effectName, C_BaseEntity* pAttachEnt ); void ClientEffectsThink( void ); void StartChargeEffects(); void StopChargeEffects(); virtual bool ShouldPlayClientReloadSound() { return true; } #endif
private:
CNetworkVar( float, m_flChargeBeginTime );
bool m_bEffectsThinking; float m_flLastDenySoundTime;
#if defined( CLIENT_DLL )
CSoundPatch *m_pChargeLoop; bool m_bReadyToFire; #endif
CTFFlareGun( const CTFFlareGun & ) {} };
//---------------------------------------------------------
class CTFFlareGun_Revenge : public CTFFlareGun { public: DECLARE_CLASS( CTFFlareGun_Revenge, CTFFlareGun ); DECLARE_NETWORKCLASS(); DECLARE_PREDICTABLE();
CTFFlareGun_Revenge();
virtual void Precache();
virtual int GetWeaponID( void ) const { return TF_WEAPON_FLAREGUN_REVENGE; } virtual bool IsEnergyWeapon( void ) const { return true; }
virtual int GetCustomDamageType() const;
virtual bool Holster( CBaseCombatWeapon *pSwitchingTo = NULL ); virtual bool Deploy( void );
#ifdef GAME_DLL
virtual void Detach(); #endif
int GetCount( void ); float GetProgress( void ) { return 0.0f; } const char* GetEffectLabelText( void ) { return "#TF_CRITS"; }
const char* GetMuzzleFlashParticleEffect( void ) { return "drg_manmelter_muzzleflash"; }
virtual void PrimaryAttack(); virtual void SecondaryAttack( void ); virtual void ChargePostFrame( void ); virtual const char* GetChargeEffect( void ) const { return "drg_manmelter_vacuum"; } virtual const char* ReadyToFireSound( void ) const { return "Weapon_SniperRailgun.NonScoped"; }
#ifdef CLIENT_DLL
virtual void OnDataChanged( DataUpdateType_t type ); void DoAbsorbEffect( void ); #endif
private: bool ExtinguishPlayerInternal( CTFPlayer *pTarget, CTFPlayer *pOwner );
CNetworkVar( float, m_fLastExtinguishTime );
#ifdef CLIENT_DLL
int m_nOldRevengeCrits; #endif
};
#endif // TF_WEAPON_FLAREGUN_H
|