summaryrefslogtreecommitdiff
path: root/game/client/tf/c_tf_projectile_energy_ball.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/tf/c_tf_projectile_energy_ball.cpp')
-rw-r--r--game/client/tf/c_tf_projectile_energy_ball.cpp98
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