summaryrefslogtreecommitdiff
path: root/game/shared/dod/weapon_dodbipodgun.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/shared/dod/weapon_dodbipodgun.h')
-rw-r--r--game/shared/dod/weapon_dodbipodgun.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/game/shared/dod/weapon_dodbipodgun.h b/game/shared/dod/weapon_dodbipodgun.h
new file mode 100644
index 0000000..7c0bb56
--- /dev/null
+++ b/game/shared/dod/weapon_dodbipodgun.h
@@ -0,0 +1,92 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#include "cbase.h"
+#include "shake.h"
+#include "weapon_dodfullauto.h"
+
+#if defined( CLIENT_DLL )
+ #define CDODBipodWeapon C_DODBipodWeapon
+#endif
+
+class CDODBipodWeapon : public CDODFullAutoWeapon
+{
+public:
+ DECLARE_CLASS( CDODBipodWeapon, CDODFullAutoWeapon );
+ DECLARE_NETWORKCLASS();
+ DECLARE_PREDICTABLE();
+
+ CDODBipodWeapon();
+
+ virtual void Spawn();
+ virtual void Precache();
+ virtual void Drop( const Vector &vecVelocity );
+ virtual void SecondaryAttack( void );
+ virtual bool Reload( void );
+
+ virtual float GetWeaponAccuracy( float flPlayerSpeed );
+
+ virtual Activity GetUndeployActivity( void );
+ virtual Activity GetDeployActivity( void );
+ virtual Activity GetPrimaryAttackActivity( void );
+ virtual Activity GetReloadActivity( void );
+ virtual Activity GetIdleActivity( void );
+
+ virtual bool CanDrop( void );
+ virtual bool CanHolster( void );
+
+ inline void SetDeployed( bool bDeployed );
+ inline bool IsDeployed( void ) { return m_bDeployed; }
+
+ virtual void ItemBusyFrame( void );
+ virtual void ItemPostFrame( void );
+ void BipodThink( void );
+
+ bool AttemptToDeploy( void );
+ bool CheckDeployEnt( void );
+
+ bool TestDeploy( float *flDeployedHeight, CBaseEntity **pDeployedOn, float *flYawLimitLeft = NULL, float *flYawLimitRight = NULL );
+ bool TestDeployAngle( CDODPlayer *pPlayer, float *flDeployedHeight, CBaseEntity **pDeployedOn, QAngle angles );
+
+ bool FindYawLimits( float *flLeftLimit, float *flRightLimit );
+
+ virtual void DoFireEffects();
+
+ void DeployBipod( float flHeight, CBaseEntity *pDeployedOn, float flYawLimitLeft, float flYawLimitRight );
+ void UndeployBipod( void );
+
+ virtual DODWeaponID GetWeaponID( void ) const { return WEAPON_NONE; }
+
+#ifdef CLIENT_DLL
+ virtual int GetWorldModelIndex( void );
+ virtual void CheckForAltWeapon( int iCurrentState );
+
+ virtual void OverrideMouseInput( float *x, float *y );
+#endif
+
+private:
+ CDODBipodWeapon( const CDODBipodWeapon & );
+
+ CNetworkVar( bool, m_bDeployed );
+
+ CNetworkVar( int, m_iDeployedModelIndex );
+ CNetworkVar( int, m_iDeployedReloadModelIndex );
+ CNetworkVar( int, m_iProneDeployedReloadModelIndex );
+
+ int m_iCurrentWorldModel;
+
+ EHANDLE m_hDeployedOnEnt;
+ float m_flDeployedHeight;
+ float m_flNextDeployCheckTime;
+
+ Vector m_DeployedEntOrigin;
+
+ bool m_bDuckedWhenDeployed;
+
+#ifdef CLIENT_DLL
+ bool m_bUseDeployedReload;
+#endif
+};