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.
110 lines
3.0 KiB
110 lines
3.0 KiB
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
//
|
|
//=============================================================================//
|
|
#include "cbase.h"
|
|
#include "tf_item.h"
|
|
#include "tf_shareddefs.h"
|
|
|
|
#ifdef CLIENT_DLL
|
|
#include "c_tf_player.h"
|
|
|
|
// NVNT haptics system interface
|
|
#include "haptics/ihaptics.h"
|
|
#else
|
|
#include "tf_player.h"
|
|
#endif
|
|
|
|
IMPLEMENT_NETWORKCLASS_ALIASED( TFItem, DT_TFItem )
|
|
|
|
BEGIN_NETWORK_TABLE( CTFItem, DT_TFItem )
|
|
END_NETWORK_TABLE()
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Identifier.
|
|
//-----------------------------------------------------------------------------
|
|
unsigned int CTFItem::GetItemID( void ) const
|
|
{
|
|
return TF_ITEM_UNDEFINED;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose:
|
|
//-----------------------------------------------------------------------------
|
|
void CTFItem::PickUp( CTFPlayer *pPlayer, bool bInvisible )
|
|
{
|
|
// SetParent with attachment point - look it up later if need be!
|
|
SetOwnerEntity( pPlayer );
|
|
SetParent( pPlayer );
|
|
SetLocalOrigin( vec3_origin );
|
|
SetLocalAngles( vec3_angle );
|
|
|
|
// Make invisible?
|
|
if ( bInvisible )
|
|
{
|
|
AddEffects( EF_NODRAW );
|
|
}
|
|
|
|
// Add the item to the player's item inventory.
|
|
pPlayer->SetItem( this );
|
|
// NVNT if this is the client dll and the owner is the local
|
|
// player notify the haptics system.
|
|
#ifdef CLIENT_DLL
|
|
if(pPlayer->IsLocalPlayer())
|
|
haptics->ProcessHapticEvent(2,"Game","ctf_item_start");
|
|
#endif
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose:
|
|
//-----------------------------------------------------------------------------
|
|
void CTFItem::Drop( CTFPlayer *pPlayer, bool bVisible, bool bThrown /*= false*/, bool bMessage /*= true*/ )
|
|
{
|
|
// Remove the item from the player's item inventory.
|
|
pPlayer->SetItem( NULL );
|
|
|
|
// Make visible?
|
|
if ( bVisible )
|
|
{
|
|
RemoveEffects( EF_NODRAW );
|
|
}
|
|
// NVNT if this is the client dll and the owner is the local
|
|
// player notify the haptics system we are dropping this item.
|
|
#ifdef CLIENT_DLL
|
|
if(pPlayer->IsLocalPlayer())
|
|
haptics->ProcessHapticEvent(2,"Game","ctf_item_stop");
|
|
#endif
|
|
|
|
// Clear the parent.
|
|
SetParent( NULL );
|
|
SetOwnerEntity( NULL );
|
|
}
|
|
|
|
#ifdef CLIENT_DLL
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose:
|
|
//-----------------------------------------------------------------------------
|
|
bool CTFItem::ShouldDraw()
|
|
{
|
|
// If I'm carrying the flag in 1st person, don't draw it
|
|
if ( ToTFPlayer(GetMoveParent())->InFirstPersonView() )
|
|
return false;
|
|
|
|
return BaseClass::ShouldDraw();
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Should this object cast shadows?
|
|
//-----------------------------------------------------------------------------
|
|
ShadowType_t CTFItem::ShadowCastType()
|
|
{
|
|
if ( ToTFPlayer(GetMoveParent())->ShouldDrawThisPlayer() )
|
|
{
|
|
// Using the viewmodel.
|
|
return SHADOWS_NONE;
|
|
}
|
|
|
|
return BaseClass::ShadowCastType();
|
|
}
|
|
|
|
#endif
|