summaryrefslogtreecommitdiff
path: root/game/shared/tf/tf_weapon_raygun.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/shared/tf/tf_weapon_raygun.h')
-rw-r--r--game/shared/tf/tf_weapon_raygun.h104
1 files changed, 104 insertions, 0 deletions
diff --git a/game/shared/tf/tf_weapon_raygun.h b/game/shared/tf/tf_weapon_raygun.h
new file mode 100644
index 0000000..0c1ab5b
--- /dev/null
+++ b/game/shared/tf/tf_weapon_raygun.h
@@ -0,0 +1,104 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+//
+//=============================================================================
+#ifndef TF_WEAPON_RAYGUN_H
+#define TF_WEAPON_RAYGUN_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "tf_weaponbase_gun.h"
+#include "tf_weapon_shotgun.h"
+#include "tf_weapon_rocketlauncher.h"
+
+// Client specific.
+#ifdef CLIENT_DLL
+#define CTFRaygun C_TFRaygun
+#define CTFDRGPomson C_TFDRGPomson
+#endif
+
+class CTFRaygun : public CTFRocketLauncher
+{
+public:
+ DECLARE_CLASS( CTFRaygun, CTFRocketLauncher );
+ DECLARE_NETWORKCLASS();
+ DECLARE_PREDICTABLE();
+
+ CTFRaygun();
+
+ virtual void Precache();
+
+ virtual int GetWeaponID( void ) const { return TF_WEAPON_RAYGUN; }
+ virtual float GetProjectileSpeed( void );
+ virtual float GetProjectileGravity( void );
+ virtual bool IsViewModelFlipped( void );
+
+ const char* GetEffectLabelText( void ) { return "#TF_BISON"; }
+ float GetProgress( void );
+
+ virtual bool Holster( CBaseCombatWeapon *pSwitchingTo );
+ virtual bool Deploy( void );
+ virtual void ItemPostFrame( void );
+
+ virtual void PrimaryAttack( void );
+ virtual void ModifyProjectile( CBaseEntity* pProj );
+
+ virtual const char* GetMuzzleFlashParticleEffect( void );
+
+ virtual float GetDamage( void ) { return 20.f; }
+
+ virtual bool IsEnergyWeapon( void ) const { return true; }
+ virtual float Energy_GetShotCost( void ) const
+ {
+ int iNoDrain = 0;
+ CALL_ATTRIB_HOOK_INT( iNoDrain, energy_weapon_no_drain );
+ if ( iNoDrain > 0 )
+ {
+ return 0.0f;
+ }
+
+ return 5.f;
+ }
+ virtual float Energy_GetRechargeCost( void ) const { return 5.f; }
+
+#ifdef CLIENT_DLL
+ virtual void DispatchMuzzleFlash( const char* effectName, C_BaseEntity* pAttachEnt );
+ void ClientEffectsThink( void );
+ virtual bool ShouldPlayClientReloadSound() { return true; }
+ virtual const char *GetIdleParticleEffect( void ) { return "drg_bison_idle"; }
+#endif
+
+ bool UseNewProjectileCode() const { return m_bUseNewProjectileCode; }
+
+private:
+
+ float m_flIrradiateTime;
+ bool m_bEffectsThinking;
+
+ CNetworkVar( bool, m_bUseNewProjectileCode );
+};
+
+
+//---------------------------------------------------------
+class CTFDRGPomson : public CTFRaygun
+{
+public:
+ DECLARE_CLASS( CTFDRGPomson, CTFRaygun );
+ DECLARE_NETWORKCLASS();
+ DECLARE_PREDICTABLE();
+
+ virtual void Precache();
+
+ virtual int GetWeaponID( void ) const { return TF_WEAPON_DRG_POMSON; }
+ const char* GetEffectLabelText( void ) { return "#TF_POMSON_HUD"; }
+
+ virtual const char *GetMuzzleFlashParticleEffect( void ) { return "drg_pomson_muzzleflash"; }
+ virtual const char *GetIdleParticleEffect( void ) { return "drg_pomson_idle"; }
+
+ virtual void GetProjectileFireSetup( CTFPlayer *pPlayer, Vector vecOffset, Vector *vecSrc, QAngle *angForward, bool bHitTeammates = true, float flEndDist = 2000.f );
+};
+
+
+
+#endif // TF_WEAPON_RAYGUN_H