mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-22 22:27:05 +00:00
113 lines
2.9 KiB
C++
113 lines
2.9 KiB
C++
//========= 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
|