source-engine/game/shared/tf2/basetfcombatweapon_shared.h
FluorescentCIAAfricanAmerican 3bf9df6b27 1
2020-04-22 12:56:21 -04:00

153 lines
4.2 KiB
C++

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