Team Fortress 2 Source Code as on 22/4/2020
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.

104 lines
3.0 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $Workfile: $
  6. // $Date: $
  7. //
  8. //-----------------------------------------------------------------------------
  9. // $Log: $
  10. //
  11. // $NoKeywords: $
  12. //=============================================================================//
  13. #include "cbase.h"
  14. #include "basetempentity.h"
  15. #define NUM_BULLET_SEED_BITS 8
  16. //-----------------------------------------------------------------------------
  17. // Purpose: Display's a blood sprite
  18. //-----------------------------------------------------------------------------
  19. class CTEHL2MPFireBullets : public CBaseTempEntity
  20. {
  21. public:
  22. DECLARE_CLASS( CTEHL2MPFireBullets, CBaseTempEntity );
  23. DECLARE_SERVERCLASS();
  24. CTEHL2MPFireBullets( const char *name );
  25. virtual ~CTEHL2MPFireBullets( void );
  26. public:
  27. CNetworkVar( int, m_iPlayer );
  28. CNetworkVector( m_vecOrigin );
  29. CNetworkVector( m_vecDir );
  30. CNetworkVar( int, m_iAmmoID );
  31. CNetworkVar( int, m_iSeed );
  32. CNetworkVar( int, m_iShots );
  33. CNetworkVar( float, m_flSpread );
  34. CNetworkVar( bool, m_bDoImpacts );
  35. CNetworkVar( bool, m_bDoTracers );
  36. };
  37. //-----------------------------------------------------------------------------
  38. // Purpose:
  39. // Input : *name -
  40. //-----------------------------------------------------------------------------
  41. CTEHL2MPFireBullets::CTEHL2MPFireBullets( const char *name ) :
  42. CBaseTempEntity( name )
  43. {
  44. }
  45. //-----------------------------------------------------------------------------
  46. // Purpose:
  47. //-----------------------------------------------------------------------------
  48. CTEHL2MPFireBullets::~CTEHL2MPFireBullets( void )
  49. {
  50. }
  51. IMPLEMENT_SERVERCLASS_ST_NOBASE(CTEHL2MPFireBullets, DT_TEHL2MPFireBullets)
  52. SendPropVector( SENDINFO(m_vecOrigin), -1, SPROP_COORD ),
  53. SendPropVector( SENDINFO(m_vecDir), -1 ),
  54. SendPropInt( SENDINFO( m_iAmmoID ), 5, SPROP_UNSIGNED ),
  55. SendPropInt( SENDINFO( m_iSeed ), NUM_BULLET_SEED_BITS, SPROP_UNSIGNED ),
  56. SendPropInt( SENDINFO( m_iShots ), 5, SPROP_UNSIGNED ),
  57. SendPropInt( SENDINFO( m_iPlayer ), 6, SPROP_UNSIGNED ), // max 64 players, see MAX_PLAYERS
  58. SendPropFloat( SENDINFO( m_flSpread ), 10, 0, 0, 1 ),
  59. SendPropBool( SENDINFO( m_bDoImpacts ) ),
  60. SendPropBool( SENDINFO( m_bDoTracers ) ),
  61. END_SEND_TABLE()
  62. // Singleton
  63. static CTEHL2MPFireBullets g_TEHL2MPFireBullets( "Shotgun Shot" );
  64. void TE_HL2MPFireBullets(
  65. int iPlayerIndex,
  66. const Vector &vOrigin,
  67. const Vector &vDir,
  68. int iAmmoID,
  69. int iSeed,
  70. int iShots,
  71. float flSpread,
  72. bool bDoTracers,
  73. bool bDoImpacts )
  74. {
  75. CPASFilter filter( vOrigin );
  76. filter.UsePredictionRules();
  77. g_TEHL2MPFireBullets.m_iPlayer = iPlayerIndex;
  78. g_TEHL2MPFireBullets.m_vecOrigin = vOrigin;
  79. g_TEHL2MPFireBullets.m_vecDir = vDir;
  80. g_TEHL2MPFireBullets.m_iSeed = iSeed;
  81. g_TEHL2MPFireBullets.m_iShots = iShots;
  82. g_TEHL2MPFireBullets.m_flSpread = flSpread;
  83. g_TEHL2MPFireBullets.m_iAmmoID = iAmmoID;
  84. g_TEHL2MPFireBullets.m_bDoTracers = bDoTracers;
  85. g_TEHL2MPFireBullets.m_bDoImpacts = bDoImpacts;
  86. Assert( iSeed < (1 << NUM_BULLET_SEED_BITS) );
  87. g_TEHL2MPFireBullets.Create( filter, 0 );
  88. }