diff options
Diffstat (limited to 'game/shared/dod/weapon_dodfullauto_punch.cpp')
| -rw-r--r-- | game/shared/dod/weapon_dodfullauto_punch.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/game/shared/dod/weapon_dodfullauto_punch.cpp b/game/shared/dod/weapon_dodfullauto_punch.cpp new file mode 100644 index 0000000..9f67a3a --- /dev/null +++ b/game/shared/dod/weapon_dodfullauto_punch.cpp @@ -0,0 +1,84 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#include "cbase.h" +#include "weapon_dodfullauto_punch.h" +#include "in_buttons.h" +#include "dod_shareddefs.h" + +#ifndef CLIENT_DLL +#include "dod_player.h" +#endif + +IMPLEMENT_NETWORKCLASS_ALIASED( DODFullAutoPunchWeapon, DT_FullAutoPunchWeapon ) + +BEGIN_NETWORK_TABLE( CDODFullAutoPunchWeapon, DT_FullAutoPunchWeapon ) +END_NETWORK_TABLE() + +#ifdef CLIENT_DLL +BEGIN_PREDICTION_DATA( CDODFullAutoPunchWeapon ) +END_PREDICTION_DATA() +#endif + +void CDODFullAutoPunchWeapon::Spawn( void ) +{ + m_iAltFireHint = HINT_USE_MELEE; + + BaseClass::Spawn(); +} + +void CDODFullAutoPunchWeapon::SecondaryAttack( void ) +{ + if ( m_bInReload ) + { + m_bInReload = false; + GetPlayerOwner()->m_flNextAttack = gpGlobals->curtime; + } + else if ( GetPlayerOwner()->m_flNextAttack > gpGlobals->curtime ) + { + return; + } + + Punch(); + + // start calling ItemPostFrame + GetPlayerOwner()->m_flNextAttack = gpGlobals->curtime; + + m_flNextPrimaryAttack = m_flNextSecondaryAttack; + +#ifndef CLIENT_DLL + CDODPlayer *pPlayer = GetDODPlayerOwner(); + if ( pPlayer ) + { + pPlayer->RemoveHintTimer( m_iAltFireHint ); + } +#endif +} + +bool CDODFullAutoPunchWeapon::Reload( void ) +{ + bool bSuccess = BaseClass::Reload(); + + if ( bSuccess ) + { + m_flNextSecondaryAttack = gpGlobals->curtime; + } + + return bSuccess; +} + +void CDODFullAutoPunchWeapon::ItemBusyFrame( void ) +{ + BaseClass::ItemBusyFrame(); + + CBasePlayer *pPlayer = GetPlayerOwner(); + + if ( pPlayer && (pPlayer->m_nButtons & IN_ATTACK2) && (m_flNextSecondaryAttack <= gpGlobals->curtime)) + { + SecondaryAttack(); + pPlayer->m_nButtons &= ~IN_ATTACK2; + } +} |