From 39ed87570bdb2f86969d4be821c94b722dc71179 Mon Sep 17 00:00:00 2001 From: Joe Ludwig Date: Wed, 26 Jun 2013 15:22:04 -0700 Subject: First version of the SOurce SDK 2013 --- mp/src/game/server/grenadethrown.cpp | 81 ++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 mp/src/game/server/grenadethrown.cpp (limited to 'mp/src/game/server/grenadethrown.cpp') 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( 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 ); +} + -- cgit v1.2.3