diff options
Diffstat (limited to 'game/client/tf/c_tf_projectile_energy_ball.cpp')
| -rw-r--r-- | game/client/tf/c_tf_projectile_energy_ball.cpp | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/game/client/tf/c_tf_projectile_energy_ball.cpp b/game/client/tf/c_tf_projectile_energy_ball.cpp new file mode 100644 index 0000000..56f5318 --- /dev/null +++ b/game/client/tf/c_tf_projectile_energy_ball.cpp @@ -0,0 +1,98 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//============================================================================= + +#include "cbase.h" +#include "c_tf_projectile_energy_ball.h" +#include "particles_new.h" +#include "SpriteTrail.h" +#include "c_tf_player.h" +#include "collisionutils.h" +#include "util_shared.h" +#include "tf_weapon_rocketlauncher.h" + +//----------------------------------------------------------------------------- +IMPLEMENT_NETWORKCLASS_ALIASED( TFProjectile_EnergyBall, DT_TFProjectile_EnergyBall ) + +BEGIN_NETWORK_TABLE( C_TFProjectile_EnergyBall, DT_TFProjectile_EnergyBall ) + RecvPropBool( RECVINFO( m_bChargedShot ) ), + RecvPropVector( RECVINFO( m_vColor1 ) ), + RecvPropVector( RECVINFO( m_vColor2 ) ) +END_NETWORK_TABLE() + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +C_TFProjectile_EnergyBall::C_TFProjectile_EnergyBall( void ) +{ + pEffect = NULL; +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +C_TFProjectile_EnergyBall::~C_TFProjectile_EnergyBall( void ) +{ + if ( pEffect ) + { + ParticleProp()->StopEmission( pEffect ); + } +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void C_TFProjectile_EnergyBall::CreateTrails( void ) +{ + if ( IsDormant() ) + return; + + if ( pEffect ) + { + ParticleProp()->StopEmission( pEffect ); + pEffect = NULL; + } + + bool bDeflected = m_iCachedDeflect != GetDeflected(); + + if ( pEffect == NULL ) + { + ParticleProp()->Init( this ); + pEffect = ParticleProp()->Create( GetTrailParticleName(), PATTACH_ABSORIGIN_FOLLOW, 0 ); + + if ( pEffect ) + { + if ( bDeflected ) + { + if ( GetTeamNumber() == TF_TEAM_BLUE ) + { + pEffect->SetControlPoint( CUSTOM_COLOR_CP1, TF_PARTICLE_WEAPON_BLUE_1 ); + pEffect->SetControlPoint( CUSTOM_COLOR_CP2, TF_PARTICLE_WEAPON_BLUE_2 ); + } + else + { + pEffect->SetControlPoint( CUSTOM_COLOR_CP1, TF_PARTICLE_WEAPON_RED_1 ); + pEffect->SetControlPoint( CUSTOM_COLOR_CP2, TF_PARTICLE_WEAPON_RED_2 ); + } + } + else + { + pEffect->SetControlPoint( CUSTOM_COLOR_CP1, m_vColor1 ); + pEffect->SetControlPoint( CUSTOM_COLOR_CP2, m_vColor2 ); + } + } + } +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +const char *C_TFProjectile_EnergyBall::GetTrailParticleName( void ) +{ + if ( m_bChargedShot ) + return ( GetTeamNumber() == TF_TEAM_RED ) ? "drg_cow_rockettrail_charged" : "drg_cow_rockettrail_charged_blue"; + else + return ( GetTeamNumber() == TF_TEAM_RED ) ? "drg_cow_rockettrail_normal" : "drg_cow_rockettrail_normal_blue"; +}
\ No newline at end of file |