source-engine/game/shared/dod/weapon_mg42.h
2022-04-16 12:05:19 +03:00

108 lines
2.3 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#ifndef WEAPON_MG42_H
#define WEAPON_MG42_H
#ifdef _WIN32
#pragma once
#endif
#include "weapon_dodbase.h"
#include "weapon_dodbipodgun.h"
#if defined( CLIENT_DLL )
#define CWeaponMG42 C_WeaponMG42
#endif
#define COOL_CONTEXT "CoolContext"
class CWeaponMG42 : public CDODBipodWeapon
{
public:
DECLARE_CLASS( CWeaponMG42, CDODBipodWeapon );
DECLARE_NETWORKCLASS();
DECLARE_PREDICTABLE();
DECLARE_ACTTABLE();
#ifdef GAME_DLL
DECLARE_DATADESC();
#endif
CWeaponMG42() {}
#ifdef CLIENT_DLL
virtual ~CWeaponMG42();
#endif
virtual DODWeaponID GetWeaponID( void ) const { return WEAPON_MG42; }
// weapon id for stats purposes
virtual DODWeaponID GetStatsWeaponID( void )
{
if ( !IsDeployed() )
return WEAPON_MG42_UNDEPLOYED;
else
return WEAPON_MG42;
}
virtual void Spawn();
virtual void Precache();
virtual void PrimaryAttack( void );
virtual bool Reload( void );
virtual void FinishReload( void );
virtual void ItemPostFrame( void );
virtual void ItemBusyFrame( void );
void ItemFrameCool( void );
virtual bool Deploy( void );
virtual bool Holster( CBaseCombatWeapon *pSwitchingTo );
virtual void Drop( const Vector &vecVelocity );
virtual Activity GetReloadActivity( void );
virtual Activity GetDrawActivity( void );
virtual Activity GetDeployActivity( void );
virtual Activity GetUndeployActivity( void );
virtual Activity GetIdleActivity( void );
virtual Activity GetPrimaryAttackActivity( void );
int GetWeaponHeat( void ) { return m_iWeaponHeat; }
virtual bool ShouldDrawCrosshair( void ) { return IsDeployed(); }
void Cool( void );
#ifdef CLIENT_DLL
virtual void ClientThink( void );
virtual void OnDataChanged( DataUpdateType_t updateType );
virtual void CleanupToolRecordingState( KeyValues *msg );
void EmitSmokeParticle( void );
#else
void CoolThink( void );
#endif
virtual float GetRecoil( void );
private:
CWeaponMG42( const CWeaponMG42 & );
CNetworkVar( int, m_iWeaponHeat );
CNetworkVar( float, m_flNextCoolTime );
CNetworkVar( bool, m_bOverheated );
#ifdef CLIENT_DLL
CSmartPtr<CSimpleEmitter> m_pEmitter;
float m_flParticleAccumulator;
PMaterialHandle m_hParticleMaterial;
#endif
};
#endif //WEAPON_MG42_H