You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
3.7 KiB
138 lines
3.7 KiB
//========= 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
|