summaryrefslogtreecommitdiff
path: root/game/shared/dod/weapon_mg42.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/shared/dod/weapon_mg42.h')
-rw-r--r--game/shared/dod/weapon_mg42.h108
1 files changed, 108 insertions, 0 deletions
diff --git a/game/shared/dod/weapon_mg42.h b/game/shared/dod/weapon_mg42.h
new file mode 100644
index 0000000..1efe467
--- /dev/null
+++ b/game/shared/dod/weapon_mg42.h
@@ -0,0 +1,108 @@
+//========= 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 \ No newline at end of file