summaryrefslogtreecommitdiff
path: root/game/shared/tf/tf_dropped_weapon.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/shared/tf/tf_dropped_weapon.h')
-rw-r--r--game/shared/tf/tf_dropped_weapon.h102
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 &params ) 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