sqwarmed/sdk_src/game/shared/swarm/asw_weapon_welder_shared.h

86 lines
2.3 KiB
C++

#ifndef _INCLUDED_ASW_WEAPON_WELDER_H
#define _INCLUDED_ASW_WEAPON_WELDER_H
#pragma once
#ifdef CLIENT_DLL
#define CASW_Weapon_Welder C_ASW_Weapon_Welder
#define CASW_Weapon_Rifle C_ASW_Weapon_Rifle
#include "c_asw_weapon_rifle.h"
#else
#include "npc_combine.h"
#include "asw_weapon_rifle.h"
#endif
class CASW_Door;
class CASW_Door_Area;
class CSoundPatch;
class CASW_Weapon_Welder : public CASW_Weapon_Rifle
{
public:
DECLARE_CLASS( CASW_Weapon_Welder, CASW_Weapon_Rifle );
DECLARE_NETWORKCLASS();
DECLARE_PREDICTABLE();
CASW_Weapon_Welder();
virtual ~CASW_Weapon_Welder();
void Precache();
virtual float GetFireRate( void );
virtual const float GetAutoAimAmount() { return 0.3f; }
virtual void PrimaryAttack();
virtual void SecondaryAttack();
virtual void WeldDoor(bool bSeal);
#ifndef CLIENT_DLL
DECLARE_DATADESC();
virtual const char* GetPickupClass() { return "asw_pickup_welder"; }
#else
virtual bool HasSecondaryExplosive( void ) const { return false; }
void ProcessMuzzleFlashEvent();
#endif
virtual bool IsOffensiveWeapon() { return false; }
virtual bool OffhandActivate();
virtual void ItemPostFrame();
virtual void BaseItemPostFrame();
CASW_Door* FindDoor();
// aiming grenades at the ground
virtual bool SupportsGroundShooting() { return false; }
#ifdef CLIENT_DLL
void OnDataChanged( DataUpdateType_t type );
void ClientThink();
void CreateWeldingEffects( C_ASW_Door* pDoor );
void RemoveWeldingEffects( void );
void UpdateDoorWeldingEffects( void );
bool m_bWeldSealLast; // were we sealing last frame, but cutting now?
CUtlReference<CNewParticleEffect> m_hWeldEffects;
#endif
//CNetworkVar( bool, m_bIsWeldingDoor ); // the bool is networked to client to store when a door is being welded
CNetworkVar( bool, m_bWeldSeal ); // is the door being sealed? False if being cut
float m_fWeldTime;
//bool m_bWeldSeal;
CASW_Door* m_pWeldDoor;
void StartWelderSound();
void StopWelderSound();
CSoundPatch* GetWelderSound();
CSoundPatch* m_pWeldingSound;
bool m_bPlayingWelderSound;
int m_iAutomaticWeldDirection; // -1 = cut +1 = seal
// Classification
virtual Class_T Classify( void ) { return (Class_T) CLASS_ASW_WELDER; }
};
#endif /* _INCLUDED_ASW_WEAPON_WELDER_H */