//========= 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