diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /sp/src/game/server/hl2/prop_combine_ball.h | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'sp/src/game/server/hl2/prop_combine_ball.h')
| -rw-r--r-- | sp/src/game/server/hl2/prop_combine_ball.h | 598 |
1 files changed, 299 insertions, 299 deletions
diff --git a/sp/src/game/server/hl2/prop_combine_ball.h b/sp/src/game/server/hl2/prop_combine_ball.h index 37356043..1de4390d 100644 --- a/sp/src/game/server/hl2/prop_combine_ball.h +++ b/sp/src/game/server/hl2/prop_combine_ball.h @@ -1,299 +1,299 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-//=============================================================================//
-
-#ifndef PROP_COMBINE_BALL_H
-#define PROP_COMBINE_BALL_H
-#ifdef _WIN32
-#pragma once
-#endif
-
-
-//-----------------------------------------------------------------------------
-// Includes
-//-----------------------------------------------------------------------------
-#include "player_pickup.h" // for combine ball inheritance
-
-//-----------------------------------------------------------------------------
-// Forward declarations
-//-----------------------------------------------------------------------------
-class CFuncCombineBallSpawner;
-class CSpriteTrail;
-
-//-----------------------------------------------------------------------------
-// Looks for enemies, bounces a max # of times before it breaks
-//-----------------------------------------------------------------------------
-class CPropCombineBall : public CBaseAnimating, public CDefaultPlayerPickupVPhysics
-{
-public:
- DECLARE_CLASS( CPropCombineBall, CBaseAnimating );
- DECLARE_DATADESC();
- DECLARE_SERVERCLASS();
-
- virtual void Precache();
- virtual void Spawn();
- virtual void UpdateOnRemove();
- void StopLoopingSounds();
-
- virtual void OnPhysGunPickup( CBasePlayer *pPhysGunUser, PhysGunPickup_t reason );
- virtual void OnPhysGunDrop( CBasePlayer *pPhysGunUser, PhysGunDrop_t Reason );
- virtual void VPhysicsCollision( int index, gamevcollisionevent_t *pEvent );
-
- virtual bool OverridePropdata();
- virtual bool CreateVPhysics();
-
- CFuncCombineBallSpawner *GetSpawner();
-
- virtual void ExplodeThink( void );
-
- // Override of IPlayerPickupVPhysics;
- virtual bool ShouldPuntUseLaunchForces( PhysGunForce_t reason ) { return ( reason == PHYSGUN_FORCE_PUNTED ); }
-
- void SetRadius( float flRadius );
- void SetSpeed( float flSpeed ) { m_flSpeed = flSpeed; }
- float GetSpeed( void ) const { return m_flSpeed; }
-
- void CaptureBySpawner( );
- bool IsBeingCaptured() const { return m_bCaptureInProgress; }
-
- void ReplaceInSpawner( float flSpeed );
-
- // Input
- void InputExplode( inputdata_t &inputdata );
- void InputFadeAndRespawn( inputdata_t &inputdata );
- void InputKill( inputdata_t &inputdata );
- void InputSocketed( inputdata_t &inputdata );
-
- enum
- {
- STATE_NOT_THROWN = 0,
- STATE_HOLDING,
- STATE_THROWN,
- STATE_LAUNCHED, //by a combine_ball launcher
- };
-
- void SetState( int state );
- bool IsInField() const;
-
- void StartWhizSoundThink( void );
-
- void StartLifetime( float flDuration );
- void ClearLifetime( );
- void SetMass( float mass );
-
- void SetWeaponLaunched( bool state = true ) { m_bWeaponLaunched = state; m_bLaunched = state; }
- bool WasWeaponLaunched( void ) const { return m_bWeaponLaunched; }
-
- bool WasFiredByNPC() const { return (GetOwnerEntity() && GetOwnerEntity()->IsNPC()); }
-
- bool ShouldHitPlayer() const;
-
- virtual CBasePlayer *HasPhysicsAttacker( float dt );
-
- void SetSpawner( CFuncCombineBallSpawner *pSpawner ) { m_hSpawner = pSpawner; }
- void NotifySpawnerOfRemoval( void );
-
-
- float LastCaptureTime() const;
-
- unsigned char GetState() const { return m_nState; }
-
- int NumBounces( void ) const { return m_nBounceCount; }
-
- void SetMaxBounces( int iBounces )
- {
- m_nMaxBounces = iBounces;
- }
-
- void SetEmitState( bool bEmit )
- {
- m_bEmit = bEmit;
- }
-
- void SetOriginalOwner( CBaseEntity *pEntity ) { m_hOriginalOwner = pEntity; }
- CBaseEntity *GetOriginalOwner() { return m_hOriginalOwner; }
-
-private:
-
- void SetPlayerLaunched( CBasePlayer *pOwner );
-
- float GetBallHoldDissolveTime();
- float GetBallHoldSoundRampTime();
-
- // Pow!
- void DoExplosion( );
-
- void StartAnimating( void );
- void StopAnimating( void );
-
- void SetBallAsLaunched( void );
-
- void CollisionEventToTrace( int index, gamevcollisionevent_t *pEvent, trace_t &tr );
- bool DissolveEntity( CBaseEntity *pEntity );
- void OnHitEntity( CBaseEntity *pHitEntity, float flSpeed, int index, gamevcollisionevent_t *pEvent );
- void DoImpactEffect( const Vector &preVelocity, int index, gamevcollisionevent_t *pEvent );
-
- // Bounce inside the spawner:
- void BounceInSpawner( float flSpeed, int index, gamevcollisionevent_t *pEvent );
-
- bool IsAttractiveTarget( CBaseEntity *pEntity );
-
- // Deflects the ball toward enemies in case of a collision
- void DeflectTowardEnemy( float flSpeed, int index, gamevcollisionevent_t *pEvent );
-
- // Is this something we can potentially dissolve?
- bool IsHittableEntity( CBaseEntity *pHitEntity );
-
- // Sucky.
- void WhizSoundThink();
- void DieThink();
- void DissolveThink();
- void DissolveRampSoundThink();
- void AnimThink( void );
-
- void FadeOut( float flDuration );
-
-
- bool OutOfBounces( void ) const
- {
- return ( m_nState == STATE_LAUNCHED && m_nMaxBounces != 0 && m_nBounceCount >= m_nMaxBounces );
- }
-
-private:
-
- int m_nBounceCount;
- int m_nMaxBounces;
- bool m_bBounceDie;
-
- float m_flLastBounceTime;
-
- bool m_bFiredGrabbedOutput;
- bool m_bStruckEntity; // Has hit an entity already (control accuracy)
- bool m_bWeaponLaunched; // Means this was fired from the AR2
- bool m_bForward; // Movement direction in ball spawner
-
- unsigned char m_nState;
- bool m_bCaptureInProgress;
-
- float m_flSpeed;
-
- CSpriteTrail *m_pGlowTrail;
- CSoundPatch *m_pHoldingSound;
-
- float m_flNextDamageTime;
- float m_flLastCaptureTime;
-
- CHandle < CFuncCombineBallSpawner > m_hSpawner;
-
- EHANDLE m_hOriginalOwner;
-
- CNetworkVar( bool, m_bEmit );
- CNetworkVar( bool, m_bHeld );
- CNetworkVar( bool, m_bLaunched );
- CNetworkVar( float, m_flRadius );
-};
-
-class CFuncCombineBallSpawner : public CBaseEntity
-{
- DECLARE_CLASS( CFuncCombineBallSpawner, CBaseEntity );
- DECLARE_DATADESC();
-
-public:
- CFuncCombineBallSpawner();
-
- virtual void Spawn();
- virtual void Precache();
-
- // Balls call this to figure out where to bounce to
- void GetTargetEndpoint( bool bForward, Vector *pVecEndpoint );
-
- // Balls call this when they've been removed from the spawner
- void RespawnBall( float flRespawnTime );
- void RespawnBallPostExplosion( void );
-
- // Fire ball grabbed output
- void BallGrabbed( CBaseEntity *pEntity );
-
- // Get speed of ball to place into the field
- float GetBallSpeed( ) const;
-
- // Register that a reflection occurred
- void RegisterReflection( CPropCombineBall *pBall, bool bForward );
-
- // Spawn a ball
- virtual void SpawnBall();
-
-private:
-
- // Choose a random point inside the cylinder
- void ChoosePointInCylinder( Vector *pVecPoint );
-
- // Choose a random point inside the box
- void ChoosePointInBox( Vector *pVecPoint );
-
- // Used to determine when to respawn balls
- void BallThink();
-
- // Input
- void InputEnable( inputdata_t &inputdata );
- void InputDisable( inputdata_t &inputdata );
-
- // Fire ball grabbed output
- void GrabBallTouch( CBaseEntity *pOther );
-
-public:
- bool m_bShooter;
- float m_flBallRadius;
- float m_flBallRespawnTime;
- float m_flMinSpeed;
- float m_flMaxSpeed;
-
-private:
- CUtlVector< float > m_BallRespawnTime;
- int m_nBallCount;
- int m_nBallsRemainingInField;
- float m_flRadius;
- float m_flDisableTime;
- bool m_bEnabled;
-
- COutputEvent m_OnBallGrabbed;
- COutputEvent m_OnBallReinserted;
- COutputEvent m_OnBallHitTopSide;
- COutputEvent m_OnBallHitBottomSide;
- COutputEvent m_OnLastBallGrabbed;
- COutputEvent m_OnFirstBallReinserted;
-};
-
-
-class CPointCombineBallLauncher : public CFuncCombineBallSpawner
-{
- DECLARE_CLASS( CPointCombineBallLauncher, CFuncCombineBallSpawner );
-
- DECLARE_DATADESC();
-
-public:
-
- virtual void Spawn( void );
- virtual void SpawnBall( void );
- void InputLaunchBall ( inputdata_t &inputdata );
-
- CPointCombineBallLauncher();
-
-private:
-
- int m_iBounces;
- float m_flConeDegrees;
- string_t m_iszBullseyeName;
-};
-
-// Creates a combine ball
-CBaseEntity *CreateCombineBall( const Vector &origin, const Vector &velocity, float radius, float mass, float lifetime, CBaseEntity *pOwner );
-
-// Query function to find out if a physics object is a combine ball (used for collision checks)
-bool UTIL_IsCombineBall( CBaseEntity *pEntity );
-bool UTIL_IsCombineBallDefinite( CBaseEntity *pEntity );
-bool UTIL_IsAR2CombineBall( CBaseEntity *pEntity );
-
-#endif // PROP_COMBINE_BALL_H
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#ifndef PROP_COMBINE_BALL_H +#define PROP_COMBINE_BALL_H +#ifdef _WIN32 +#pragma once +#endif + + +//----------------------------------------------------------------------------- +// Includes +//----------------------------------------------------------------------------- +#include "player_pickup.h" // for combine ball inheritance + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +class CFuncCombineBallSpawner; +class CSpriteTrail; + +//----------------------------------------------------------------------------- +// Looks for enemies, bounces a max # of times before it breaks +//----------------------------------------------------------------------------- +class CPropCombineBall : public CBaseAnimating, public CDefaultPlayerPickupVPhysics +{ +public: + DECLARE_CLASS( CPropCombineBall, CBaseAnimating ); + DECLARE_DATADESC(); + DECLARE_SERVERCLASS(); + + virtual void Precache(); + virtual void Spawn(); + virtual void UpdateOnRemove(); + void StopLoopingSounds(); + + virtual void OnPhysGunPickup( CBasePlayer *pPhysGunUser, PhysGunPickup_t reason ); + virtual void OnPhysGunDrop( CBasePlayer *pPhysGunUser, PhysGunDrop_t Reason ); + virtual void VPhysicsCollision( int index, gamevcollisionevent_t *pEvent ); + + virtual bool OverridePropdata(); + virtual bool CreateVPhysics(); + + CFuncCombineBallSpawner *GetSpawner(); + + virtual void ExplodeThink( void ); + + // Override of IPlayerPickupVPhysics; + virtual bool ShouldPuntUseLaunchForces( PhysGunForce_t reason ) { return ( reason == PHYSGUN_FORCE_PUNTED ); } + + void SetRadius( float flRadius ); + void SetSpeed( float flSpeed ) { m_flSpeed = flSpeed; } + float GetSpeed( void ) const { return m_flSpeed; } + + void CaptureBySpawner( ); + bool IsBeingCaptured() const { return m_bCaptureInProgress; } + + void ReplaceInSpawner( float flSpeed ); + + // Input + void InputExplode( inputdata_t &inputdata ); + void InputFadeAndRespawn( inputdata_t &inputdata ); + void InputKill( inputdata_t &inputdata ); + void InputSocketed( inputdata_t &inputdata ); + + enum + { + STATE_NOT_THROWN = 0, + STATE_HOLDING, + STATE_THROWN, + STATE_LAUNCHED, //by a combine_ball launcher + }; + + void SetState( int state ); + bool IsInField() const; + + void StartWhizSoundThink( void ); + + void StartLifetime( float flDuration ); + void ClearLifetime( ); + void SetMass( float mass ); + + void SetWeaponLaunched( bool state = true ) { m_bWeaponLaunched = state; m_bLaunched = state; } + bool WasWeaponLaunched( void ) const { return m_bWeaponLaunched; } + + bool WasFiredByNPC() const { return (GetOwnerEntity() && GetOwnerEntity()->IsNPC()); } + + bool ShouldHitPlayer() const; + + virtual CBasePlayer *HasPhysicsAttacker( float dt ); + + void SetSpawner( CFuncCombineBallSpawner *pSpawner ) { m_hSpawner = pSpawner; } + void NotifySpawnerOfRemoval( void ); + + + float LastCaptureTime() const; + + unsigned char GetState() const { return m_nState; } + + int NumBounces( void ) const { return m_nBounceCount; } + + void SetMaxBounces( int iBounces ) + { + m_nMaxBounces = iBounces; + } + + void SetEmitState( bool bEmit ) + { + m_bEmit = bEmit; + } + + void SetOriginalOwner( CBaseEntity *pEntity ) { m_hOriginalOwner = pEntity; } + CBaseEntity *GetOriginalOwner() { return m_hOriginalOwner; } + +private: + + void SetPlayerLaunched( CBasePlayer *pOwner ); + + float GetBallHoldDissolveTime(); + float GetBallHoldSoundRampTime(); + + // Pow! + void DoExplosion( ); + + void StartAnimating( void ); + void StopAnimating( void ); + + void SetBallAsLaunched( void ); + + void CollisionEventToTrace( int index, gamevcollisionevent_t *pEvent, trace_t &tr ); + bool DissolveEntity( CBaseEntity *pEntity ); + void OnHitEntity( CBaseEntity *pHitEntity, float flSpeed, int index, gamevcollisionevent_t *pEvent ); + void DoImpactEffect( const Vector &preVelocity, int index, gamevcollisionevent_t *pEvent ); + + // Bounce inside the spawner: + void BounceInSpawner( float flSpeed, int index, gamevcollisionevent_t *pEvent ); + + bool IsAttractiveTarget( CBaseEntity *pEntity ); + + // Deflects the ball toward enemies in case of a collision + void DeflectTowardEnemy( float flSpeed, int index, gamevcollisionevent_t *pEvent ); + + // Is this something we can potentially dissolve? + bool IsHittableEntity( CBaseEntity *pHitEntity ); + + // Sucky. + void WhizSoundThink(); + void DieThink(); + void DissolveThink(); + void DissolveRampSoundThink(); + void AnimThink( void ); + + void FadeOut( float flDuration ); + + + bool OutOfBounces( void ) const + { + return ( m_nState == STATE_LAUNCHED && m_nMaxBounces != 0 && m_nBounceCount >= m_nMaxBounces ); + } + +private: + + int m_nBounceCount; + int m_nMaxBounces; + bool m_bBounceDie; + + float m_flLastBounceTime; + + bool m_bFiredGrabbedOutput; + bool m_bStruckEntity; // Has hit an entity already (control accuracy) + bool m_bWeaponLaunched; // Means this was fired from the AR2 + bool m_bForward; // Movement direction in ball spawner + + unsigned char m_nState; + bool m_bCaptureInProgress; + + float m_flSpeed; + + CSpriteTrail *m_pGlowTrail; + CSoundPatch *m_pHoldingSound; + + float m_flNextDamageTime; + float m_flLastCaptureTime; + + CHandle < CFuncCombineBallSpawner > m_hSpawner; + + EHANDLE m_hOriginalOwner; + + CNetworkVar( bool, m_bEmit ); + CNetworkVar( bool, m_bHeld ); + CNetworkVar( bool, m_bLaunched ); + CNetworkVar( float, m_flRadius ); +}; + +class CFuncCombineBallSpawner : public CBaseEntity +{ + DECLARE_CLASS( CFuncCombineBallSpawner, CBaseEntity ); + DECLARE_DATADESC(); + +public: + CFuncCombineBallSpawner(); + + virtual void Spawn(); + virtual void Precache(); + + // Balls call this to figure out where to bounce to + void GetTargetEndpoint( bool bForward, Vector *pVecEndpoint ); + + // Balls call this when they've been removed from the spawner + void RespawnBall( float flRespawnTime ); + void RespawnBallPostExplosion( void ); + + // Fire ball grabbed output + void BallGrabbed( CBaseEntity *pEntity ); + + // Get speed of ball to place into the field + float GetBallSpeed( ) const; + + // Register that a reflection occurred + void RegisterReflection( CPropCombineBall *pBall, bool bForward ); + + // Spawn a ball + virtual void SpawnBall(); + +private: + + // Choose a random point inside the cylinder + void ChoosePointInCylinder( Vector *pVecPoint ); + + // Choose a random point inside the box + void ChoosePointInBox( Vector *pVecPoint ); + + // Used to determine when to respawn balls + void BallThink(); + + // Input + void InputEnable( inputdata_t &inputdata ); + void InputDisable( inputdata_t &inputdata ); + + // Fire ball grabbed output + void GrabBallTouch( CBaseEntity *pOther ); + +public: + bool m_bShooter; + float m_flBallRadius; + float m_flBallRespawnTime; + float m_flMinSpeed; + float m_flMaxSpeed; + +private: + CUtlVector< float > m_BallRespawnTime; + int m_nBallCount; + int m_nBallsRemainingInField; + float m_flRadius; + float m_flDisableTime; + bool m_bEnabled; + + COutputEvent m_OnBallGrabbed; + COutputEvent m_OnBallReinserted; + COutputEvent m_OnBallHitTopSide; + COutputEvent m_OnBallHitBottomSide; + COutputEvent m_OnLastBallGrabbed; + COutputEvent m_OnFirstBallReinserted; +}; + + +class CPointCombineBallLauncher : public CFuncCombineBallSpawner +{ + DECLARE_CLASS( CPointCombineBallLauncher, CFuncCombineBallSpawner ); + + DECLARE_DATADESC(); + +public: + + virtual void Spawn( void ); + virtual void SpawnBall( void ); + void InputLaunchBall ( inputdata_t &inputdata ); + + CPointCombineBallLauncher(); + +private: + + int m_iBounces; + float m_flConeDegrees; + string_t m_iszBullseyeName; +}; + +// Creates a combine ball +CBaseEntity *CreateCombineBall( const Vector &origin, const Vector &velocity, float radius, float mass, float lifetime, CBaseEntity *pOwner ); + +// Query function to find out if a physics object is a combine ball (used for collision checks) +bool UTIL_IsCombineBall( CBaseEntity *pEntity ); +bool UTIL_IsCombineBallDefinite( CBaseEntity *pEntity ); +bool UTIL_IsAR2CombineBall( CBaseEntity *pEntity ); + +#endif // PROP_COMBINE_BALL_H |