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.
107 lines
2.6 KiB
107 lines
2.6 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
//=============================================================================
|
||
|
|
||
|
#include "cbase.h"
|
||
|
#include "c_dod_basegrenade.h"
|
||
|
|
||
|
|
||
|
#include "c_dod_player.h"
|
||
|
#include "dodoverview.h"
|
||
|
|
||
|
IMPLEMENT_NETWORKCLASS_ALIASED( DODBaseGrenade, DT_DODBaseGrenade )
|
||
|
|
||
|
BEGIN_NETWORK_TABLE(C_DODBaseGrenade, DT_DODBaseGrenade )
|
||
|
RecvPropVector( RECVINFO( m_vInitialVelocity ) )
|
||
|
END_NETWORK_TABLE()
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
C_DODBaseGrenade::~C_DODBaseGrenade()
|
||
|
{
|
||
|
GetDODOverview()->RemoveGrenade( this );
|
||
|
ParticleProp()->StopEmission();
|
||
|
}
|
||
|
|
||
|
void C_DODBaseGrenade::PostDataUpdate( DataUpdateType_t type )
|
||
|
{
|
||
|
BaseClass::PostDataUpdate( type );
|
||
|
|
||
|
if ( type == DATA_UPDATE_CREATED )
|
||
|
{
|
||
|
// Now stick our initial velocity into the interpolation history
|
||
|
CInterpolatedVar< Vector > &interpolator = GetOriginInterpolator();
|
||
|
|
||
|
interpolator.ClearHistory();
|
||
|
float changeTime = GetLastChangeTime( LATCH_SIMULATION_VAR );
|
||
|
|
||
|
// Add a sample 1 second back.
|
||
|
Vector vCurOrigin = GetLocalOrigin() - m_vInitialVelocity;
|
||
|
interpolator.AddToHead( changeTime - 1.0, &vCurOrigin, false );
|
||
|
|
||
|
// Add the current sample.
|
||
|
vCurOrigin = GetLocalOrigin();
|
||
|
interpolator.AddToHead( changeTime, &vCurOrigin, false );
|
||
|
|
||
|
// BUG ? this may call multiple times
|
||
|
GetDODOverview()->AddGrenade( this );
|
||
|
|
||
|
const char *pszParticleTrail = GetParticleTrailName();
|
||
|
if ( pszParticleTrail )
|
||
|
{
|
||
|
ParticleProp()->Create( pszParticleTrail, PATTACH_ABSORIGIN_FOLLOW );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int C_DODBaseGrenade::DrawModel( int flags )
|
||
|
{
|
||
|
if( m_flSpawnTime + 0.15 > gpGlobals->curtime )
|
||
|
return 0;
|
||
|
|
||
|
C_DODPlayer *pPlayer = C_DODPlayer::GetLocalDODPlayer();
|
||
|
|
||
|
if ( pPlayer && GetAbsVelocity().Length() < 30 )
|
||
|
{
|
||
|
pPlayer->CheckGrenadeHint( GetAbsOrigin() );
|
||
|
}
|
||
|
|
||
|
return BaseClass::DrawModel( flags );
|
||
|
}
|
||
|
|
||
|
void C_DODBaseGrenade::Spawn()
|
||
|
{
|
||
|
m_flSpawnTime = gpGlobals->curtime;
|
||
|
BaseClass::Spawn();
|
||
|
}
|
||
|
|
||
|
const char *C_DODBaseGrenade::GetOverviewSpriteName( void )
|
||
|
{
|
||
|
const char *pszSprite = "";
|
||
|
|
||
|
switch( GetTeamNumber() )
|
||
|
{
|
||
|
case TEAM_ALLIES:
|
||
|
pszSprite = "sprites/minimap_icons/grenade_hltv";
|
||
|
break;
|
||
|
case TEAM_AXIS:
|
||
|
pszSprite = "sprites/minimap_icons/stick_hltv";
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
return pszSprite;
|
||
|
}
|
||
|
|
||
|
IMPLEMENT_NETWORKCLASS_ALIASED( DODRifleGrenadeUS, DT_DODRifleGrenadeUS )
|
||
|
|
||
|
BEGIN_NETWORK_TABLE(C_DODRifleGrenadeUS, DT_DODRifleGrenadeUS )
|
||
|
END_NETWORK_TABLE()
|
||
|
|
||
|
|
||
|
IMPLEMENT_CLIENTCLASS_DT(C_DODRifleGrenadeGER, DT_DODRifleGrenadeGER, CDODRifleGrenadeGER)
|
||
|
END_RECV_TABLE()
|