diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/server/grenadethrown.cpp | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/server/grenadethrown.cpp')
| -rw-r--r-- | mp/src/game/server/grenadethrown.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/mp/src/game/server/grenadethrown.cpp b/mp/src/game/server/grenadethrown.cpp new file mode 100644 index 00000000..a7c5f354 --- /dev/null +++ b/mp/src/game/server/grenadethrown.cpp @@ -0,0 +1,81 @@ +//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//
+//=============================================================================//
+/*
+
+===== grenade_base.cpp ========================================================
+
+ Base Handling for all the player's grenades
+
+*/
+#include "cbase.h"
+#include "grenadethrown.h"
+#include "ammodef.h"
+#include "vstdlib/random.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+// Precaches a grenade and ensures clients know of it's "ammo"
+void UTIL_PrecacheOtherGrenade( const char *szClassname )
+{
+ CBaseEntity *pEntity = CreateEntityByName( szClassname );
+ if ( !pEntity )
+ {
+ Msg( "NULL Ent in UTIL_PrecacheOtherGrenade\n" );
+ return;
+ }
+
+ CThrownGrenade *pGrenade = dynamic_cast<CThrownGrenade *>( pEntity );
+
+ if (pGrenade)
+ {
+ pGrenade->Precache( );
+ }
+
+ UTIL_Remove( pEntity );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Setup basic values for Thrown grens
+//-----------------------------------------------------------------------------
+void CThrownGrenade::Spawn( void )
+{
+ // point sized, solid, bouncing
+ SetMoveType( MOVETYPE_FLYGRAVITY, MOVECOLLIDE_FLY_BOUNCE );
+ SetSolid( SOLID_BBOX );
+ UTIL_SetSize(this, vec3_origin, vec3_origin);
+
+ // Movement
+ SetGravity( UTIL_ScaleForGravity( 648 ) );
+ SetFriction(0.6);
+ QAngle angles;
+ VectorAngles( GetAbsVelocity(), angles );
+ SetLocalAngles( angles );
+ QAngle vecAngVel( random->RandomFloat ( -100, -500 ), 0, 0 );
+ SetLocalAngularVelocity( vecAngVel );
+
+ SetTouch( &CThrownGrenade::BounceTouch );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Throw the grenade.
+// Input : vecOrigin - Starting position
+// vecVelocity - Starting velocity
+// flExplodeTime - Time at which to detonate
+//-----------------------------------------------------------------------------
+void CThrownGrenade::Thrown( Vector vecOrigin, Vector vecVelocity, float flExplodeTime )
+{
+ // Throw
+ SetLocalOrigin( vecOrigin );
+ SetAbsVelocity( vecVelocity );
+
+ // Explode in 3 seconds
+ SetThink( &CThrownGrenade::Detonate );
+ SetNextThink( gpGlobals->curtime + flExplodeTime );
+}
+
|