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.
100 lines
2.4 KiB
100 lines
2.4 KiB
5 years ago
|
//========= 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
|