summaryrefslogtreecommitdiff
path: root/game/shared/econ/econ_wearable.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/shared/econ/econ_wearable.h')
-rw-r--r--game/shared/econ/econ_wearable.h138
1 files changed, 138 insertions, 0 deletions
diff --git a/game/shared/econ/econ_wearable.h b/game/shared/econ/econ_wearable.h
new file mode 100644
index 0000000..6bdea85
--- /dev/null
+++ b/game/shared/econ/econ_wearable.h
@@ -0,0 +1,138 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#ifndef ECON_WEARABLE_H
+#define ECON_WEARABLE_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "econ_entity.h"
+
+enum
+{
+ MAX_WEARABLES_SENT_FROM_SERVER =
+#ifdef LOADOUT_MAX_WEARABLES_COUNT // we actually do want to just check for macro definition here -- undefined means "fall back to whatever default"
+ LOADOUT_MAX_WEARABLES_COUNT
+#else
+ 8 // hard-coded constant to match old behavior
+#endif
+};
+
+#if defined( CLIENT_DLL )
+#define CEconWearable C_EconWearable
+#define CTFWearableItem C_TFWearableItem
+#endif
+
+enum
+{
+ ITEM_DROP_TYPE_NULL,
+ ITEM_DROP_TYPE_NONE,
+ ITEM_DROP_TYPE_DROP,
+ ITEM_DROP_TYPE_BREAK,
+};
+
+class CEconWearable : public CEconEntity
+{
+ DECLARE_CLASS( CEconWearable, CEconEntity );
+public:
+ DECLARE_NETWORKCLASS();
+ DECLARE_DATADESC();
+
+ CEconWearable();
+
+ virtual bool IsWearable( void ) const { return true; }
+
+ // Shared
+ virtual void Spawn( void );
+ virtual void GiveTo( CBaseEntity *pOther );
+ virtual void RemoveFrom( CBaseEntity *pOther );
+ virtual bool CanEquip( CBaseEntity *pOther ) { return true; }
+ virtual void Equip( CBasePlayer *pOwner );
+ virtual void UnEquip( CBasePlayer* pOwner );
+ virtual void OnWearerDeath( void );
+ virtual int GetDropType( void );
+// virtual bool UpdateBodygroups( CBasePlayer* pOwner, int iState );
+
+ void SetAlwaysAllow( bool bVal ) { m_bAlwaysAllow = bVal; }
+ bool AlwaysAllow( void ) { return m_bAlwaysAllow; }
+
+ virtual bool IsViewModelWearable( void ) { return false; }
+
+ // Server
+#if defined( GAME_DLL )
+#endif
+
+ // Client
+#if defined( CLIENT_DLL )
+ virtual ShadowType_t ShadowCastType() OVERRIDE;
+ virtual bool ShouldDraw();
+ virtual bool ShouldDrawWhenPlayerIsDead() { return true; }
+ virtual void OnDataChanged( DataUpdateType_t updateType );
+ virtual void ClientThink( void );
+ virtual bool ShouldDrawParticleSystems( void );
+ virtual RenderGroup_t GetRenderGroup();
+#endif
+
+ virtual int GetSkin( void );
+
+ // Static
+ static void UpdateWearableBodyGroups( CBasePlayer *pPlayer );
+
+protected:
+ virtual void InternalSetPlayerDisplayModel( void );
+
+private:
+ bool m_bAlwaysAllow; // Wearable will not be removed by ManageRegularWeapons. Only use this for wearables managed by other items!
+};
+
+//-----------------------------------------------------------------------------
+// Purpose: For backwards compatibility with older demos
+//-----------------------------------------------------------------------------
+class CTFWearableItem : public CEconWearable
+{
+ DECLARE_CLASS( CTFWearableItem, CEconWearable );
+public:
+ DECLARE_NETWORKCLASS();
+ DECLARE_DATADESC();
+
+ CTFWearableItem();
+};
+
+#ifdef CLIENT_DLL
+// Clientside wearable physics props. Used to have wearables fall off dying players.
+class C_EconWearableGib : public CEconEntity
+{
+ DECLARE_CLASS( C_EconWearableGib, CEconEntity );
+public:
+ C_EconWearableGib();
+ ~C_EconWearableGib();
+
+ bool Initialize( bool bWillBeParented );
+ bool FinishModelInitialization( void );
+
+ virtual CStudioHdr *OnNewModel( void );
+
+ virtual bool ValidateEntityAttachedToPlayer( bool &bShouldRetry );
+
+ virtual void SpawnClientEntity();
+ virtual void Spawn();
+ virtual void ClientThink( void );
+ void StartFadeOut( float fDelay );
+ virtual void ImpactTrace( trace_t *pTrace, int iDamageType, const char *pCustomImpactName );
+ virtual CollideType_t GetCollideType( void ) { return ENTITY_SHOULD_RESPOND; }
+
+ bool UpdateThinkState( void );
+
+private:
+ bool m_bParented;
+ bool m_bDelayedInit;
+ float m_fDeathTime; // Point at which this object self destructs.
+ // The default of -1 indicates the object shouldn't destruct.
+};
+#endif
+
+#endif // ECON_WEARABLE_H \ No newline at end of file