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.

83 lines
2.4 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose: Projectile shot by city scanner
  4. //
  5. // $Workfile: $
  6. // $Date: $
  7. // $NoKeywords: $
  8. //=============================================================================//
  9. #ifndef GRENADEHOMER_H
  10. #define GRENADEHOMER_H
  11. #ifdef _WIN32
  12. #pragma once
  13. #endif
  14. #include "basegrenade_shared.h"
  15. #include "weapon_rpg.h"
  16. enum HomerRocketTrail_t
  17. {
  18. HOMER_SMOKE_TRAIL_OFF, // No smoke trail
  19. HOMER_SMOKE_TRAIL_ON, // Smoke trail always on
  20. HOMER_SMOKE_TRAIL_ON_HOMING, // Smoke trail on when homing turned on
  21. HOMER_SMOKE_TRAIL_ALIEN, // Alien colors on smoke trail
  22. };
  23. class CGrenadeHomer : public CBaseGrenade
  24. {
  25. public:
  26. DECLARE_CLASS( CGrenadeHomer, CBaseGrenade );
  27. static CGrenadeHomer* CreateGrenadeHomer( string_t nModelName, string_t sFlySound, const Vector &vecOrigin, const QAngle &vecAngles, edict_t *pentOwner );
  28. virtual void Precache( void );
  29. void Spawn( void );
  30. void Launch( CBaseEntity *pOwner, CBaseEntity *pTarget, const Vector &vInitVelocity, float m_flHomingSpeed, float fFallSpeed, int nRocketTrailType);
  31. void SetSpin(float flSpinMagnitude, float flSpinSpeed);
  32. void SetHoming(float flStrength, float flDelay, float flRampUp, float flDuration, float flRampDown);
  33. CHandle<RocketTrail> m_hRocketTrail[3];
  34. private:
  35. string_t m_sFlySound;
  36. float m_flNextFlySoundTime;
  37. // Input Parameters
  38. float m_flHomingStrength;
  39. float m_flHomingDelay; // How long before homing starts
  40. float m_flHomingRampUp; // How long it take to reach full strength
  41. float m_flHomingDuration; // How long does homing last
  42. float m_flHomingRampDown; // How long to reach no homing again
  43. float m_flHomingSpeed;
  44. float m_flSpinMagnitude;
  45. float m_flSpinSpeed;
  46. int m_nRocketTrailType;
  47. int m_spriteTexture;
  48. // In flight data
  49. float m_flHomingLaunchTime;
  50. float m_flHomingStartTime;
  51. float m_flHomingEndTime;
  52. float m_flSpinOffset; // For randomization
  53. EHANDLE m_hTarget;
  54. void AimThink( void );
  55. void StartRocketTrail(void);
  56. void UpdateRocketTrail(float fScale);
  57. void StopRocketTrail(void);
  58. void PlayFlySound( void );
  59. void GrenadeHomerTouch( CBaseEntity *pOther );
  60. void Event_Killed( const CTakeDamageInfo &info );
  61. int OnTakeDamage( const CTakeDamageInfo &info );
  62. public:
  63. void EXPORT Detonate(void);
  64. CGrenadeHomer(void);
  65. DECLARE_DATADESC();
  66. };
  67. #endif //GRENADEHOMER_H