Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

156 lines
3.6 KiB

//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#include "cbase.h"
#include "fx_cs_shared.h"
#include "c_cs_player.h"
#include "c_basetempentity.h"
#include <cliententitylist.h>
// NOTE: This has to be the last file included!
#include "tier0/memdbgon.h"
class C_TEFireBullets : public C_BaseTempEntity
{
public:
DECLARE_CLASS( C_TEFireBullets, C_BaseTempEntity );
DECLARE_CLIENTCLASS();
C_TEFireBullets();
virtual void PostDataUpdate( DataUpdateType_t updateType );
public:
int m_iPlayer;
uint16 m_nItemDefIndex;
Vector m_vecOrigin;
QAngle m_vecAngles;
CSWeaponID m_iWeaponID;
int m_iMode;
int m_iSeed;
float m_fInaccuracy;
float m_flRecoilIndex;
float m_fSpread;
#if defined( WEAPON_FIRE_BULLETS_ACCURACY_FISHTAIL_FEATURE )
float m_fAccuracyFishtail;
#endif
WeaponSound_t m_iSoundType;
};
C_TEFireBullets::C_TEFireBullets()
{
m_iPlayer = 0;
m_nItemDefIndex = 0;
m_iWeaponID = WEAPON_NONE;
m_iMode = 0;
m_iSeed = 0;
m_fInaccuracy = 0;
m_flRecoilIndex = 0;
m_fSpread = 0;
m_iSoundType = EMPTY;
}
void C_TEFireBullets::PostDataUpdate( DataUpdateType_t updateType )
{
// Create the effect.
//
// Vitaliy: Aug-2013 economy update note
// fields m_nItemDefIndex and m_iSoundType are new and are not
// networked in the previous demo recordings, force the sound type
// to the default SINGLE value if it didn't network correctly
//
Assert(
( m_iSoundType == EMPTY ) || // pre-economy update ver. 1.23.1.4
( m_iSoundType == SINGLE ) || // default sound for firing
( m_iSoundType == SPECIAL1 ) || // silenced weapons use this sound
0 );
WeaponSound_t wpnSoundToUse = SINGLE;
switch ( m_iSoundType )
{
case SPECIAL1:
wpnSoundToUse = SPECIAL1;
break;
}
m_vecAngles.z = 0;
FX_FireBullets(
m_iPlayer+1,
m_nItemDefIndex,
m_vecOrigin,
m_vecAngles,
m_iWeaponID,
m_iMode,
m_iSeed,
m_fInaccuracy,
m_fSpread,
#if defined( WEAPON_FIRE_BULLETS_ACCURACY_FISHTAIL_FEATURE )
m_fAccuracyFishtail,
#else
0.0f,
#endif
0,
wpnSoundToUse,
m_flRecoilIndex
);
}
IMPLEMENT_CLIENTCLASS_EVENT( C_TEFireBullets, DT_TEFireBullets, CTEFireBullets );
BEGIN_RECV_TABLE_NOBASE(C_TEFireBullets, DT_TEFireBullets)
RecvPropVector( RECVINFO( m_vecOrigin ) ),
RecvPropFloat( RECVINFO( m_vecAngles[0] ) ),
RecvPropFloat( RECVINFO( m_vecAngles[1] ) ),
RecvPropInt( RECVINFO( m_iWeaponID ) ),
RecvPropInt( RECVINFO( m_iMode ) ),
RecvPropInt( RECVINFO( m_iSeed ) ),
RecvPropInt( RECVINFO( m_iPlayer ) ),
RecvPropFloat( RECVINFO( m_fInaccuracy ) ),
RecvPropFloat( RECVINFO( m_fSpread ) ),
RecvPropInt( RECVINFO( m_nItemDefIndex ) ),
RecvPropInt( RECVINFO( m_iSoundType ) ),
#if defined( WEAPON_FIRE_BULLETS_ACCURACY_FISHTAIL_FEATURE )
RecvPropFloat( RECVINFO( m_fAccuracyFishtail) ),
#endif
RecvPropFloat( RECVINFO( m_flRecoilIndex ) ),
END_RECV_TABLE()
class C_TEPlantBomb : public C_BaseTempEntity
{
public:
DECLARE_CLASS( C_TEPlantBomb, C_BaseTempEntity );
DECLARE_CLIENTCLASS();
virtual void PostDataUpdate( DataUpdateType_t updateType );
public:
int m_iPlayer;
Vector m_vecOrigin;
PlantBombOption_t m_option;
};
void C_TEPlantBomb::PostDataUpdate( DataUpdateType_t updateType )
{
// Create the effect.
FX_PlantBomb( m_iPlayer+1, m_vecOrigin, m_option );
}
IMPLEMENT_CLIENTCLASS_EVENT( C_TEPlantBomb, DT_TEPlantBomb, CTEPlantBomb );
BEGIN_RECV_TABLE_NOBASE(C_TEPlantBomb, DT_TEPlantBomb)
RecvPropVector( RECVINFO( m_vecOrigin ) ),
RecvPropInt( RECVINFO( m_iPlayer ) ),
RecvPropInt( RECVINFO( m_option ) ),
END_RECV_TABLE()