summaryrefslogtreecommitdiff
path: root/game/server/hl2/basehlcombatweapon.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/server/hl2/basehlcombatweapon.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/server/hl2/basehlcombatweapon.h')
-rw-r--r--game/server/hl2/basehlcombatweapon.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/game/server/hl2/basehlcombatweapon.h b/game/server/hl2/basehlcombatweapon.h
new file mode 100644
index 0000000..7c43164
--- /dev/null
+++ b/game/server/hl2/basehlcombatweapon.h
@@ -0,0 +1,97 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#include "basehlcombatweapon_shared.h"
+
+#ifndef BASEHLCOMBATWEAPON_H
+#define BASEHLCOMBATWEAPON_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+//=========================================================
+// Machine gun base class
+//=========================================================
+abstract_class CHLMachineGun : public CBaseHLCombatWeapon
+{
+public:
+ DECLARE_CLASS( CHLMachineGun, CBaseHLCombatWeapon );
+ DECLARE_DATADESC();
+
+ CHLMachineGun();
+
+ DECLARE_SERVERCLASS();
+
+ void PrimaryAttack( void );
+
+ // Default calls through to m_hOwner, but plasma weapons can override and shoot projectiles here.
+ virtual void ItemPostFrame( void );
+ virtual void FireBullets( const FireBulletsInfo_t &info );
+ virtual float GetFireRate( void ) = 0;
+ virtual int WeaponRangeAttack1Condition( float flDot, float flDist );
+ virtual bool Deploy( void );
+
+ virtual const Vector &GetBulletSpread( void );
+
+ int WeaponSoundRealtime( WeaponSound_t shoot_type );
+
+ // utility function
+ static void DoMachineGunKick( CBasePlayer *pPlayer, float dampEasy, float maxVerticleKickAngle, float fireDurationTime, float slideLimitTime );
+
+protected:
+
+ int m_nShotsFired; // Number of consecutive shots fired
+
+ float m_flNextSoundTime; // real-time clock of when to make next sound
+};
+
+//=========================================================
+// Machine guns capable of switching between full auto and
+// burst fire modes.
+//=========================================================
+// Mode settings for select fire weapons
+enum
+{
+ FIREMODE_FULLAUTO = 1,
+ FIREMODE_SEMI,
+ FIREMODE_3RNDBURST,
+};
+
+//=========================================================
+// >> CHLSelectFireMachineGun
+//=========================================================
+class CHLSelectFireMachineGun : public CHLMachineGun
+{
+ DECLARE_CLASS( CHLSelectFireMachineGun, CHLMachineGun );
+public:
+
+ CHLSelectFireMachineGun( void );
+
+ DECLARE_SERVERCLASS();
+
+ virtual float GetBurstCycleRate( void );
+ virtual float GetFireRate( void );
+
+ virtual bool Deploy( void );
+ virtual void WeaponSound( WeaponSound_t shoot_type, float soundtime = 0.0f );
+
+ DECLARE_DATADESC();
+
+ virtual int GetBurstSize( void ) { return 3; };
+
+ void BurstThink( void );
+
+ virtual void PrimaryAttack( void );
+ virtual void SecondaryAttack( void );
+
+ virtual int WeaponRangeAttack1Condition( float flDot, float flDist );
+ virtual int WeaponRangeAttack2Condition( float flDot, float flDist );
+
+protected:
+ int m_iBurstSize;
+ int m_iFireMode;
+};
+#endif // BASEHLCOMBATWEAPON_H