diff options
Diffstat (limited to 'game/shared/tf/tf_dropped_weapon.h')
| -rw-r--r-- | game/shared/tf/tf_dropped_weapon.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/game/shared/tf/tf_dropped_weapon.h b/game/shared/tf/tf_dropped_weapon.h new file mode 100644 index 0000000..54f4c84 --- /dev/null +++ b/game/shared/tf/tf_dropped_weapon.h @@ -0,0 +1,102 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef TF_DROPPED_WEAPON_H +#define TF_DROPPED_WEAPON_H +#ifdef _WIN32 +#pragma once +#endif + +#ifdef CLIENT_DLL +#define CTFDroppedWeapon C_TFDroppedWeapon +#endif // CLIENT_DLL + +#ifdef GAME_DLL +class CTFPlayer; +#endif // GAME_DLL + +DECLARE_AUTO_LIST( IDroppedWeaponAutoList ); + +class CTFDroppedWeapon : public CBaseAnimating, public IDroppedWeaponAutoList +{ +public: + DECLARE_CLASS( CTFDroppedWeapon, CBaseAnimating ); + DECLARE_NETWORKCLASS(); + + CTFDroppedWeapon(); + ~CTFDroppedWeapon(); + + virtual void Spawn() OVERRIDE; + +#ifdef CLIENT_DLL + virtual void OnPreDataChanged( DataUpdateType_t updateType ) OVERRIDE; + virtual void OnDataChanged( DataUpdateType_t updateType ) OVERRIDE; + virtual void ClientThink() OVERRIDE; + + // target id + virtual bool IsVisibleToTargetID( void ) const OVERRIDE; + + // Draw Attachment models + virtual bool OnInternalDrawModel( ClientModelRenderInfo_t *pInfo ); + + virtual IMaterial *GetEconWeaponMaterialOverride( int iTeam ) OVERRIDE; + virtual void ModifyEmitSoundParams( EmitSound_t ¶ms ) OVERRIDE; +#endif // CLIENT_DLL + +#ifdef GAME_DLL + static CTFDroppedWeapon *Create( CTFPlayer *pLastOwner, const Vector &vecOrigin, const QAngle &vecAngles, const char *pszModelName, const CEconItemView *pItem ); + void InitDroppedWeapon( CTFPlayer *pPlayer, CTFWeaponBase *pWeapon, bool bSwap, bool bIsSuicide = false ); + void InitPickedUpWeapon( CTFPlayer *pPlayer, CTFWeaponBase *pWeapon ); + + void ChargeLevelDegradeThink(); +#endif // GAME_DLL + + CEconItemView *GetItem() { return &m_Item; } + const CEconItemView *GetItem() const { return &m_Item; } + + float GetChargeLevel( void ){ return m_flChargeLevel; } + +private: + + CNetworkVarEmbedded( CEconItemView, m_Item ); + CNetworkVar( float, m_flChargeLevel ); + +#ifdef GAME_DLL + + CHandle< CTFPlayer > m_hPlayer; + + // preserve weapon ammo in the clip + void SetItem( const CEconItemView *pItem ); + + // preserve ammo count + int m_nClip; + int m_nAmmo; + int m_nDetonated; + float m_flEnergy; + float m_flEffectBarRegenTime; + float m_flNextPrimaryAttack; + float m_flNextSecondaryAttack; +#endif // GAME_DLL + +#ifdef CLIENT_DLL + void SetupParticleEffect(); + HPARTICLEFFECT m_effect; + + CHandle< C_BaseAnimating > m_worldmodelStatTrakAddon; + + void UpdateGlowEffect( void ); + void DestroyGlowEffect( void ); + CGlowObject *m_pGlowEffect; + bool m_bShouldGlowForLocalPlayer; + + CUtlVector<AttachedModelData_t> m_vecAttachedModels; + + float m_flOldChargeLevel; +#endif // CLIENT_DLL +}; + +#endif // TF_DROPPED_WEAPON_H |