diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/shared/dod/weapon_30cal.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/shared/dod/weapon_30cal.cpp')
| -rw-r--r-- | game/shared/dod/weapon_30cal.cpp | 423 |
1 files changed, 423 insertions, 0 deletions
diff --git a/game/shared/dod/weapon_30cal.cpp b/game/shared/dod/weapon_30cal.cpp new file mode 100644 index 0000000..919f9f7 --- /dev/null +++ b/game/shared/dod/weapon_30cal.cpp @@ -0,0 +1,423 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#include "cbase.h" +#include "weapon_dodbipodgun.h" + +#if defined( CLIENT_DLL ) + + #include "c_dod_player.h" + + #define CWeapon30cal C_Weapon30cal + +#else + + #include "dod_player.h" + +#endif + + +class CWeapon30cal : public CDODBipodWeapon +{ +public: + DECLARE_CLASS( CWeapon30cal, CDODBipodWeapon ); + DECLARE_NETWORKCLASS(); + DECLARE_PREDICTABLE(); + DECLARE_ACTTABLE(); + + CWeapon30cal() {} + + virtual DODWeaponID GetWeaponID( void ) const { return WEAPON_30CAL; } + + // weapon id for stats purposes + virtual DODWeaponID GetStatsWeaponID( void ) + { + if ( !IsDeployed() ) + return WEAPON_30CAL_UNDEPLOYED; + else + return WEAPON_30CAL; + } + + virtual void PrimaryAttack( void ); + + virtual bool ShouldDrawCrosshair( void ) { return IsDeployed(); } + + virtual bool Reload( void ); + + virtual Activity GetDrawActivity( void ); + virtual Activity GetDeployActivity( void ); + virtual Activity GetUndeployActivity( void ); + virtual Activity GetIdleActivity( void ); + virtual Activity GetPrimaryAttackActivity( void ); + + virtual float GetRecoil( void ); + +private: + CWeapon30cal( const CWeapon30cal & ); +}; + +IMPLEMENT_NETWORKCLASS_ALIASED( Weapon30cal, DT_Weapon30cal ) + +BEGIN_NETWORK_TABLE( CWeapon30cal, DT_Weapon30cal ) +END_NETWORK_TABLE() + +BEGIN_PREDICTION_DATA( CWeapon30cal ) +END_PREDICTION_DATA() + +LINK_ENTITY_TO_CLASS( weapon_30cal, CWeapon30cal ); +PRECACHE_WEAPON_REGISTER( weapon_30cal ); + +acttable_t CWeapon30cal::m_acttable[] = +{ + { ACT_DOD_STAND_AIM, ACT_DOD_STAND_AIM_30CAL, false }, + { ACT_DOD_CROUCH_AIM, ACT_DOD_CROUCH_AIM_30CAL, false }, + { ACT_DOD_CROUCHWALK_AIM, ACT_DOD_CROUCHWALK_AIM_30CAL, false }, + { ACT_DOD_WALK_AIM, ACT_DOD_WALK_AIM_30CAL, false }, + { ACT_DOD_RUN_AIM, ACT_DOD_RUN_AIM_30CAL, false }, + { ACT_PRONE_IDLE, ACT_DOD_PRONE_AIM_30CAL, false }, + { ACT_PRONE_FORWARD, ACT_DOD_PRONEWALK_IDLE_30CAL, false }, + { ACT_DOD_STAND_IDLE, ACT_DOD_STAND_IDLE_30CAL, false }, + { ACT_DOD_CROUCH_IDLE, ACT_DOD_CROUCH_IDLE_30CAL, false }, + { ACT_DOD_CROUCHWALK_IDLE, ACT_DOD_CROUCHWALK_IDLE_30CAL, false }, + { ACT_DOD_WALK_IDLE, ACT_DOD_WALK_IDLE_30CAL, false }, + { ACT_DOD_RUN_IDLE, ACT_DOD_RUN_IDLE_30CAL, false }, + { ACT_SPRINT, ACT_DOD_SPRINT_IDLE_30CAL, false }, + + { ACT_RANGE_ATTACK1, ACT_DOD_PRIMARYATTACK_30CAL, false }, + { ACT_DOD_PRIMARYATTACK_CROUCH, ACT_DOD_PRIMARYATTACK_30CAL, false }, + { ACT_DOD_PRIMARYATTACK_PRONE, ACT_DOD_PRIMARYATTACK_PRONE_30CAL, false }, + { ACT_DOD_DEPLOYED, ACT_DOD_DEPLOY_30CAL, false }, + { ACT_DOD_PRONE_DEPLOYED, ACT_DOD_PRONE_DEPLOY_30CAL, false }, + { ACT_DOD_PRIMARYATTACK_DEPLOYED, ACT_DOD_PRIMARYATTACK_DEPLOYED_30CAL, false }, + { ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED, ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED_30CAL,false }, + { ACT_DOD_RELOAD_DEPLOYED, ACT_DOD_RELOAD_DEPLOYED_30CAL, false }, + { ACT_DOD_RELOAD_PRONE_DEPLOYED, ACT_DOD_RELOAD_PRONE_DEPLOYED_30CAL, false }, + + { ACT_DOD_HS_IDLE, ACT_DOD_HS_IDLE_30CAL, false }, + { ACT_DOD_HS_CROUCH, ACT_DOD_HS_CROUCH_30CAL, false }, +}; + +IMPLEMENT_ACTTABLE( CWeapon30cal ); + +bool CWeapon30cal::Reload( void ) +{ + if( !IsDeployed() ) + { +#ifdef CLIENT_DLL + CDODPlayer *pPlayer = ToDODPlayer( GetPlayerOwner() ); + + if ( pPlayer ) + pPlayer->HintMessage( HINT_MG_DEPLOY_TO_RELOAD ); +#endif + return false; + } + + return BaseClass::Reload(); +} + +void CWeapon30cal::PrimaryAttack( void ) +{ + if ( m_iClip1 <= 0 ) + { + if (m_bFireOnEmpty) + { + PlayEmptySound(); + m_flNextPrimaryAttack = gpGlobals->curtime + 0.2; + } + + return; + } + +#ifdef CLIENT_DLL + C_DODPlayer *pPlayer = ToDODPlayer( GetPlayerOwner() ); +#else + CDODPlayer *pPlayer = ToDODPlayer( GetPlayerOwner() ); +#endif + + Assert( pPlayer ); + + if( !IsDeployed() ) + { +#ifdef CLIENT_DLL + pPlayer->HintMessage( HINT_MG_FIRE_UNDEPLOYED ); +#endif + pPlayer->m_Shared.SetSlowedTime( 0.2 ); + + float flStamina = pPlayer->m_Shared.GetStamina(); + + pPlayer->m_Shared.SetStamina( flStamina - 15 ); + } + + BaseClass::PrimaryAttack(); +} + +Activity CWeapon30cal::GetDrawActivity( void ) +{ + Activity actDraw; + + if( m_iClip1 <= 0 ) + actDraw = ACT_VM_DRAW_EMPTY; + else + actDraw = ACT_VM_DRAW; + + return actDraw; +} + +Activity CWeapon30cal::GetDeployActivity( void ) +{ + Activity actDeploy; + + switch ( m_iClip1 ) + { + case 8: + actDeploy = ACT_VM_DEPLOY_8; + break; + case 7: + actDeploy = ACT_VM_DEPLOY_7; + break; + case 6: + actDeploy = ACT_VM_DEPLOY_6; + break; + case 5: + actDeploy = ACT_VM_DEPLOY_5; + break; + case 4: + actDeploy = ACT_VM_DEPLOY_4; + break; + case 3: + actDeploy = ACT_VM_DEPLOY_3; + break; + case 2: + actDeploy = ACT_VM_DEPLOY_2; + break; + case 1: + actDeploy = ACT_VM_DEPLOY_1; + break; + case 0: + actDeploy = ACT_VM_DEPLOY_EMPTY; + break; + default: + actDeploy = ACT_VM_DEPLOY; + break; + } + + return actDeploy; +} + +Activity CWeapon30cal::GetUndeployActivity( void ) +{ + Activity actUndeploy; + + switch ( m_iClip1 ) + { + case 8: + actUndeploy = ACT_VM_UNDEPLOY_8; + break; + case 7: + actUndeploy = ACT_VM_UNDEPLOY_7; + break; + case 6: + actUndeploy = ACT_VM_UNDEPLOY_6; + break; + case 5: + actUndeploy = ACT_VM_UNDEPLOY_5; + break; + case 4: + actUndeploy = ACT_VM_UNDEPLOY_4; + break; + case 3: + actUndeploy = ACT_VM_UNDEPLOY_3; + break; + case 2: + actUndeploy = ACT_VM_UNDEPLOY_2; + break; + case 1: + actUndeploy = ACT_VM_UNDEPLOY_1; + break; + case 0: + actUndeploy = ACT_VM_UNDEPLOY_EMPTY; + break; + default: + actUndeploy = ACT_VM_UNDEPLOY; + break; + } + + return actUndeploy; +} + +Activity CWeapon30cal::GetIdleActivity( void ) +{ + Activity actIdle; + + if( IsDeployed() ) + { + switch ( m_iClip1 ) + { + case 8: + actIdle = ACT_VM_IDLE_DEPLOYED_8; + break; + case 7: + actIdle = ACT_VM_IDLE_DEPLOYED_7; + break; + case 6: + actIdle = ACT_VM_IDLE_DEPLOYED_6; + break; + case 5: + actIdle = ACT_VM_IDLE_DEPLOYED_5; + break; + case 4: + actIdle = ACT_VM_IDLE_DEPLOYED_4; + break; + case 3: + actIdle = ACT_VM_IDLE_DEPLOYED_3; + break; + case 2: + actIdle = ACT_VM_IDLE_DEPLOYED_2; + break; + case 1: + actIdle = ACT_VM_IDLE_DEPLOYED_1; + break; + case 0: + actIdle = ACT_VM_IDLE_DEPLOYED_EMPTY; + break; + default: + actIdle = ACT_VM_IDLE_DEPLOYED; + break; + } + } + else + { + switch ( m_iClip1 ) + { + case 8: + actIdle = ACT_VM_IDLE_8; + break; + case 7: + actIdle = ACT_VM_IDLE_7; + break; + case 6: + actIdle = ACT_VM_IDLE_6; + break; + case 5: + actIdle = ACT_VM_IDLE_5; + break; + case 4: + actIdle = ACT_VM_IDLE_4; + break; + case 3: + actIdle = ACT_VM_IDLE_3; + break; + case 2: + actIdle = ACT_VM_IDLE_2; + break; + case 1: + actIdle = ACT_VM_IDLE_1; + break; + case 0: + actIdle = ACT_VM_IDLE_EMPTY; + break; + default: + actIdle = ACT_VM_IDLE; + break; + } + } + + return actIdle; +} + +Activity CWeapon30cal::GetPrimaryAttackActivity( void ) +{ + Activity actPrim; + + int maxhax = m_iClip1 + 2; + + if( IsDeployed() ) + { + switch ( maxhax ) + { + case 8: + actPrim = ACT_VM_PRIMARYATTACK_DEPLOYED_8; + break; + case 7: + actPrim = ACT_VM_PRIMARYATTACK_DEPLOYED_7; + break; + case 6: + actPrim = ACT_VM_PRIMARYATTACK_DEPLOYED_6; + break; + case 5: + actPrim = ACT_VM_PRIMARYATTACK_DEPLOYED_5; + break; + case 4: + actPrim = ACT_VM_PRIMARYATTACK_DEPLOYED_4; + break; + case 3: + actPrim = ACT_VM_PRIMARYATTACK_DEPLOYED_3; + break; + case 2: + actPrim = ACT_VM_PRIMARYATTACK_DEPLOYED_2; + break; + case 1: + actPrim = ACT_VM_PRIMARYATTACK_DEPLOYED_1; + break; + case 0: + actPrim = ACT_VM_PRIMARYATTACK_DEPLOYED_EMPTY; + break; + default: + actPrim = ACT_VM_PRIMARYATTACK_DEPLOYED; + break; + } + } + else + { + switch ( maxhax ) + { + case 8: + actPrim = ACT_VM_PRIMARYATTACK_8; + break; + case 7: + actPrim = ACT_VM_PRIMARYATTACK_7; + break; + case 6: + actPrim = ACT_VM_PRIMARYATTACK_6; + break; + case 5: + actPrim = ACT_VM_PRIMARYATTACK_5; + break; + case 4: + actPrim = ACT_VM_PRIMARYATTACK_4; + break; + case 3: + actPrim = ACT_VM_PRIMARYATTACK_3; + break; + case 2: + actPrim = ACT_VM_PRIMARYATTACK_2; + break; + case 1: + actPrim = ACT_VM_PRIMARYATTACK_1; + break; + case 0: + actPrim = ACT_VM_PRIMARYATTACK_EMPTY; + break; + default: + actPrim = ACT_VM_PRIMARYATTACK; + break; + } + } + + return actPrim; +} + +float CWeapon30cal::GetRecoil( void ) +{ + CDODPlayer *p = ToDODPlayer( GetPlayerOwner() ); + + if( p && p->m_Shared.IsInMGDeploy() ) + { + return 0.0f; + } + + return 20; +} |