summaryrefslogtreecommitdiff
path: root/game/shared/tfc/weapon_tfc_super_nailgun.cpp
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/shared/tfc/weapon_tfc_super_nailgun.cpp
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/shared/tfc/weapon_tfc_super_nailgun.cpp')
-rw-r--r--game/shared/tfc/weapon_tfc_super_nailgun.cpp109
1 files changed, 109 insertions, 0 deletions
diff --git a/game/shared/tfc/weapon_tfc_super_nailgun.cpp b/game/shared/tfc/weapon_tfc_super_nailgun.cpp
new file mode 100644
index 0000000..2060798
--- /dev/null
+++ b/game/shared/tfc/weapon_tfc_super_nailgun.cpp
@@ -0,0 +1,109 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#include "cbase.h"
+#include "util.h"
+#include "weapon_tfc_super_nailgun.h"
+#include "decals.h"
+#include "in_buttons.h"
+#include "nailgun_nail.h"
+
+#if defined( CLIENT_DLL )
+ #include "c_tfc_player.h"
+#else
+ #include "tfc_player.h"
+#endif
+
+
+// ----------------------------------------------------------------------------- //
+// CTFCSuperNailgun tables.
+// ----------------------------------------------------------------------------- //
+
+IMPLEMENT_NETWORKCLASS_ALIASED( TFCSuperNailgun, DT_WeaponSuperNailgun )
+
+BEGIN_NETWORK_TABLE( CTFCSuperNailgun, DT_WeaponSuperNailgun )
+END_NETWORK_TABLE()
+
+BEGIN_PREDICTION_DATA( CTFCSuperNailgun )
+END_PREDICTION_DATA()
+
+LINK_ENTITY_TO_CLASS( weapon_super_nailgun, CTFCSuperNailgun );
+PRECACHE_WEAPON_REGISTER( weapon_super_nailgun );
+
+#ifndef CLIENT_DLL
+
+ BEGIN_DATADESC( CTFCSuperNailgun )
+ END_DATADESC()
+
+#endif
+
+// ----------------------------------------------------------------------------- //
+// CTFCSuperNailgun implementation.
+// ----------------------------------------------------------------------------- //
+
+CTFCSuperNailgun::CTFCSuperNailgun()
+{
+}
+
+
+TFCWeaponID CTFCSuperNailgun::GetWeaponID() const
+{
+ return WEAPON_SUPER_NAILGUN;
+}
+
+
+void CTFCSuperNailgun::PrimaryAttack()
+{
+ CTFCPlayer *pOwner = GetPlayerOwner();
+ if ( !pOwner )
+ return;
+
+ Assert( HasPrimaryAmmo() );
+
+ // Effects.
+ WeaponSound( SINGLE );
+ SendWeaponAnim( ACT_VM_PRIMARYATTACK );
+ pOwner->DoAnimationEvent( PLAYERANIMEVENT_FIRE_GUN );
+
+ // Create the nail.
+ int iCurrentAmmoCount = pOwner->GetAmmoCount( GetPrimaryAmmoType() );
+
+#ifdef GAME_DLL // TFCTODO: predict this
+ Vector vecSrc = pOwner->Weapon_ShootPosition();
+ CTFNailgunNail *pNail = NULL;
+ if ( iCurrentAmmoCount < 4 )
+ pNail = CTFNailgunNail::CreateNail( false, vecSrc, pOwner->EyeAngles(), pOwner, this, true );
+ else
+ pNail = CTFNailgunNail::CreateSuperNail( vecSrc, pOwner->EyeAngles(), pOwner, this );
+#endif
+
+ // Uses 2 nails if it can
+ pOwner->RemoveAmmo( MIN( 2, iCurrentAmmoCount ), GetPrimaryAmmoType() );
+
+ // Setup fire delays
+ m_flNextPrimaryAttack = gpGlobals->curtime + 0.1;
+ m_flTimeWeaponIdle = gpGlobals->curtime + 10;
+}
+
+
+#ifdef CLIENT_DLL
+
+ // ------------------------------------------------------------------------------------------------ //
+ // ------------------------------------------------------------------------------------------------ //
+ // CLIENT DLL SPECIFIC CODE
+ // ------------------------------------------------------------------------------------------------ //
+ // ------------------------------------------------------------------------------------------------ //
+
+
+#else
+
+ // ------------------------------------------------------------------------------------------------ //
+ // ------------------------------------------------------------------------------------------------ //
+ // GAME DLL SPECIFIC CODE
+ // ------------------------------------------------------------------------------------------------ //
+ // ------------------------------------------------------------------------------------------------ //
+
+#endif