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.
99 lines
2.4 KiB
99 lines
2.4 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef WEAPON_DRAINBEAM_H |
|
#define WEAPON_DRAINBEAM_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "weapon_combat_usedwithshieldbase.h" |
|
|
|
#if defined( CLIENT_DLL ) |
|
#define CWeaponDrainBeam C_WeaponDrainBeam |
|
#endif |
|
|
|
//========================================================= |
|
// Medikit Weapon |
|
//========================================================= |
|
class CWeaponDrainBeam : public CWeaponCombatUsedWithShieldBase |
|
{ |
|
DECLARE_CLASS( CWeaponDrainBeam, CWeaponCombatUsedWithShieldBase ); |
|
public: |
|
DECLARE_NETWORKCLASS(); |
|
DECLARE_PREDICTABLE(); |
|
|
|
CWeaponDrainBeam( void ); |
|
|
|
virtual void Precache(); |
|
|
|
virtual bool Holster( CBaseCombatWeapon *pSwitchingTo ); |
|
virtual void ItemPostFrame( void ); |
|
virtual void PrimaryAttack( void ); |
|
virtual void WeaponIdle( void ); |
|
|
|
virtual void PlayAttackAnimation( int activity ); |
|
virtual void GainedNewTechnology( CBaseTechnology *pTechnology ); |
|
|
|
// Draining |
|
CBaseEntity *GetTargetToDrain( CBaseEntity *pCurDrainTarget ); |
|
CBaseEntity *GetCurDrainTarget( void ) { return m_hDrainTarget; } |
|
void RemoveDrainTarget( void ); |
|
|
|
// All predicted weapons need to implement and return true |
|
virtual bool IsPredicted( void ) const |
|
{ |
|
return true; |
|
} |
|
|
|
#if defined( CLIENT_DLL ) |
|
virtual bool ShouldPredict( void ) |
|
{ |
|
if ( GetOwner() == C_BasePlayer::GetLocalPlayer() ) |
|
return true; |
|
|
|
return BaseClass::ShouldPredict(); |
|
} |
|
// Stop all sounds being output. |
|
void StopDrainSound( bool bStopHealingSound = true, bool bStopNoTargetSound = true ); |
|
// IClientNetworkable. |
|
public: |
|
virtual void OnDataChanged( DataUpdateType_t updateType ); |
|
// IClientThinkable. |
|
public: |
|
|
|
virtual void ClientThink(); |
|
|
|
#endif |
|
|
|
public: |
|
CNetworkHandle( CBaseEntity, m_hDrainTarget ); |
|
|
|
// Networked data. |
|
public: |
|
CNetworkVar( bool, m_bDraining ); |
|
CNetworkVar( bool, m_bAttacking ); |
|
CNetworkVector( m_vFireTarget ); |
|
|
|
#if defined( CLIENT_DLL ) |
|
CSmartPtr<CSimpleEmitter> m_pEmitter; |
|
PMaterialHandle m_hParticleMaterial; |
|
|
|
TimedEvent m_PathParticleEvent; |
|
TimedEvent m_DribbleParticleEvent; |
|
|
|
bool m_bPlayingSound; |
|
#else |
|
float m_flDrainStartedAt; |
|
#endif |
|
private: |
|
double m_flNextBuzzTime; |
|
|
|
CWeaponDrainBeam( const CWeaponDrainBeam & ); |
|
}; |
|
|
|
#endif // WEAPON_DRAINBEAM_H
|
|
|