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
//========= 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() |