diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/dod/c_dod_basegrenade.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/dod/c_dod_basegrenade.cpp')
| -rw-r--r-- | game/client/dod/c_dod_basegrenade.cpp | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/game/client/dod/c_dod_basegrenade.cpp b/game/client/dod/c_dod_basegrenade.cpp new file mode 100644 index 0000000..c2f6212 --- /dev/null +++ b/game/client/dod/c_dod_basegrenade.cpp @@ -0,0 +1,107 @@ +//========= 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()
\ No newline at end of file |