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.
112 lines
2.9 KiB
112 lines
2.9 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef WEAPON_REPAIRGUN_H |
|
#define WEAPON_REPAIRGUN_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "weapon_combat_usedwithshieldbase.h" |
|
|
|
#if defined( CLIENT_DLL ) |
|
#define CWeaponRepairGun C_WeaponRepairGun |
|
#endif |
|
|
|
//========================================================= |
|
// Medikit Weapon |
|
//========================================================= |
|
class CWeaponRepairGun : public CWeaponCombatUsedWithShieldBase |
|
{ |
|
DECLARE_CLASS( CWeaponRepairGun, CWeaponCombatUsedWithShieldBase ); |
|
public: |
|
DECLARE_NETWORKCLASS(); |
|
DECLARE_PREDICTABLE(); |
|
|
|
CWeaponRepairGun( 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 ); |
|
virtual bool ComputeEMPFireState( void ); |
|
|
|
virtual float GetTargetRange( void ); |
|
virtual float GetStickRange( void ); |
|
virtual float GetHealRate( void ); |
|
virtual bool AppliesModifier( void ) { return true; } |
|
virtual bool TargetsPlayers( void ) { return true; } |
|
|
|
// 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 StopRepairSound( bool bStopHealingSound = true, bool bStopNoTargetSound = true ); |
|
|
|
// This is used to stop making particles when the entity goes dormant. |
|
virtual void NotifyShouldTransmit( ShouldTransmitState_t state ); |
|
// IClientNetworkable. |
|
public: |
|
virtual void OnDataChanged( DataUpdateType_t updateType ); |
|
// IClientThinkable. |
|
public: |
|
|
|
virtual void ClientThink(); |
|
|
|
#endif |
|
|
|
protected: |
|
virtual CBaseEntity *GetTargetToHeal( CBaseEntity *pCurHealing ); |
|
virtual CBaseEntity *CheckVehicleTargets( CBaseEntity *pCurHealing ); |
|
|
|
private: |
|
CBaseEntity* GetCurHealingTarget() { return m_hHealingTarget; } |
|
void RemoveHealingTarget(); |
|
|
|
double m_flNextBuzzTime; |
|
|
|
float m_flHealEffectLifetime; // Count down until the healing effect goes off. |
|
#if !defined( CLIENT_DLL ) |
|
CDamageModifier m_DamageModifier; // This attaches to whoever we're healing. |
|
#endif |
|
CNetworkVar( bool, m_bAttacking ); |
|
|
|
protected: |
|
// Networked data. |
|
CNetworkVar( bool, m_bHealing ); |
|
CNetworkHandle( CBaseEntity, m_hHealingTarget ); |
|
|
|
#if defined( CLIENT_DLL ) |
|
CSmartPtr<CSimpleEmitter> m_pEmitter; |
|
PMaterialHandle m_hParticleMaterial; |
|
|
|
TimedEvent m_PathParticleEvent; |
|
|
|
bool m_bPlayingSound; |
|
|
|
#endif |
|
private: |
|
CWeaponRepairGun( const CWeaponRepairGun & ); |
|
}; |
|
|
|
#endif // WEAPON_REPAIRGUN_H
|
|
|