summaryrefslogtreecommitdiff
path: root/game/shared/tf2/basetfcombatweapon_shared.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/shared/tf2/basetfcombatweapon_shared.h')
-rw-r--r--game/shared/tf2/basetfcombatweapon_shared.h152
1 files changed, 152 insertions, 0 deletions
diff --git a/game/shared/tf2/basetfcombatweapon_shared.h b/game/shared/tf2/basetfcombatweapon_shared.h
new file mode 100644
index 0000000..4c16acf
--- /dev/null
+++ b/game/shared/tf2/basetfcombatweapon_shared.h
@@ -0,0 +1,152 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef BASETFCOMBATWEAPON_SHARED_H
+#define BASETFCOMBATWEAPON_SHARED_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "baseplayer_shared.h"
+#include "basetfplayer_shared.h"
+#include "basecombatweapon_shared.h"
+
+#if defined( CLIENT_DLL )
+#define CBaseTFCombatWeapon C_BaseTFCombatWeapon
+#endif
+//-----------------------------------------------------------------------------
+// Purpose: Client side rep of CBaseTFCombatWeapon
+//-----------------------------------------------------------------------------
+class CBaseTFCombatWeapon : public CBaseCombatWeapon
+{
+ DECLARE_CLASS( CBaseTFCombatWeapon, CBaseCombatWeapon );
+public:
+ DECLARE_NETWORKCLASS();
+ DECLARE_PREDICTABLE();
+
+ CBaseTFCombatWeapon ();
+
+ virtual void Precache( void );
+
+ bool IsCamouflaged( void );
+
+ virtual Vector GetTracerSrc( Vector &vecSrc, Vector &vecFireDir );
+
+ // Check if the owner is being EMP'd and if we can't fire, play an appropriate
+ // failure sound
+ // Default is to allow firing no matter what
+ virtual bool ComputeEMPFireState( void ) { return true; }
+
+ virtual void CheckRemoveDisguise( void );
+
+ virtual int GetImpactScale( void ) { return 1; };
+
+ // FIXME: why are these virtual?
+ virtual float SequenceDuration( int iSequence );
+ virtual float SequenceDuration( void ) { return SequenceDuration( GetSequence() ); }
+
+ virtual void WeaponSound( WeaponSound_t sound_type, float soundtime = 0.0f );
+
+ virtual void PlayAttackAnimation( int activity );
+
+ virtual bool SendWeaponAnim( int iActivity );
+ virtual void SetReflectViewModelAnimations( bool reflect );
+ virtual bool IsReflectingAnimations( void ) const;
+ virtual int GetLastReflectedActivity( void ) { return m_iLastReflectedActivity; };
+ virtual int GetOtherWeaponsActivity( int iActivity ) { return iActivity; }
+ virtual int ReplaceOtherWeaponsActivity( int iActivity ) { return iActivity; }
+ virtual bool SupportsTwoHanded( void ) { return false; };
+
+ virtual void CleanupOnActStart( void ) { return; }
+
+ bool IsOwnerEMPed();
+
+ virtual void BulletWasFired( const Vector &vecStart, const Vector &vecEnd ) { return; };
+
+ // Technology handling
+ virtual void GainedNewTechnology( CBaseTechnology *pTechnology ) { return; };
+
+ /*
+ // All predicted weapons need to implement and return true
+ virtual bool IsPredicted( void ) const
+ {
+ return true;
+ }
+ */
+
+ virtual int GetPrimaryAmmo( void );
+
+ virtual void AddViewmodelBob( CBaseViewModel *viewmodel, Vector &origin, QAngle &angles );
+ virtual float CalcViewmodelBob( void );
+
+
+#if defined( CLIENT_DLL )
+ virtual bool ShouldPredict( void )
+ {
+ if ( GetOwner() &&
+ GetOwner() == C_BasePlayer::GetLocalPlayer() )
+ return true;
+
+ return BaseClass::ShouldPredict();
+ }
+
+ // Camo
+ virtual int GetFxBlend( void );
+ virtual bool IsTransparent( void );
+
+ virtual int GetSecondaryAmmo( void );
+ virtual int DrawModel( int flags );
+ virtual void DrawAmmo( void );
+ virtual void DrawMiniAmmo( void );
+ virtual bool ShouldDrawPickup( void );
+
+ virtual void OnDataChanged( DataUpdateType_t updateType );
+
+ virtual const char *GetPrintName( void );
+ virtual bool ShouldShowUsageHint( void );
+
+ static void CreateCrosshairPanels( void );
+ static void DestroyCrosshairPanels( void );
+
+ virtual bool OnFireEvent( C_BaseViewModel *pViewModel, const Vector& origin, const QAngle& angles, int event, const char *options );
+
+protected:
+ static vgui::Label *m_pCrosshairAmmo;
+
+private:
+ // Share crosshair stuff among all weapons
+ static bool m_bCrosshairInitialized;
+ // Create/destroy shared crosshair object
+ static void InitializeCrosshairPanels( void );
+
+private:
+ CBaseTFCombatWeapon ( const CBaseTFCombatWeapon & );
+
+#else
+ virtual void AddAssociatedObject( CBaseObject *pObject ) { }
+ virtual void RemoveAssociatedObject( CBaseObject *pObject ) { }
+protected:
+
+ // CVars that contain my damage details
+ const ConVar *m_pDamageCVar;
+ const ConVar *m_pRangeCVar;
+
+#endif
+
+protected:
+ // If true, reflect and weapon animations to all view models
+ CNetworkVar( bool, m_bReflectViewModelAnimations );
+ int m_iLastReflectedActivity;
+
+ float bobtime;
+ float bob;
+};
+
+#endif // BASETFCOMBATWEAPON_SHARED_H
+
+
+