summaryrefslogtreecommitdiff
path: root/game/client/dod/c_dod_basegrenade.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/dod/c_dod_basegrenade.cpp
downloadarchived-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.cpp107
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