diff options
Diffstat (limited to 'game/shared/tf2/basetfcombatweapon_shared.h')
| -rw-r--r-- | game/shared/tf2/basetfcombatweapon_shared.h | 152 |
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 + + + |