diff options
Diffstat (limited to 'game/shared/dod/weapon_dodbipodgun.h')
| -rw-r--r-- | game/shared/dod/weapon_dodbipodgun.h | 92 |
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 +}; |