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.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#include "Color.h"
#ifndef COMBINE_MINE_H
#define COMBINE_MINE_H
#ifdef _WIN32
#pragma once
#endif
class CSoundPatch;
//---------------------------------------------------------
//---------------------------------------------------------
#define BOUNCEBOMB_HOOK_RANGE 64
#define BOUNCEBOMB_WARN_RADIUS 245.0 // Must be slightly less than physcannon!
#define BOUNCEBOMB_DETONATE_RADIUS 100.0
#define BOUNCEBOMB_EXPLODE_RADIUS 125.0
#define BOUNCEBOMB_EXPLODE_DAMAGE 150.0
#include "player_pickup.h"
class CBounceBomb : public CBaseAnimating, public CDefaultPlayerPickupVPhysics { DECLARE_CLASS( CBounceBomb, CBaseAnimating );
public: CBounceBomb() { m_pWarnSound = NULL; m_bPlacedByPlayer = false; } void Precache(); void Spawn(); void OnRestore(); int DrawDebugTextOverlays(void); void SetMineState( int iState ); int GetMineState() { return m_iMineState; } bool IsValidLocation(); void Flip( const Vector &vecForce, const AngularImpulse &torque ); void SearchThink(); void BounceThink(); void SettleThink(); void CaptiveThink(); void ExplodeThink(); void ExplodeTouch( CBaseEntity *pOther ); void CavernBounceThink(); ///< an alternative style of bouncing used for the citizen modded bouncers
bool IsAwake() { return m_bAwake; } void Wake( bool bWake ); float FindNearestNPC(); void SetNearestNPC( CBaseEntity *pNearest ) { m_hNearestNPC.Set( pNearest ); } int OnTakeDamage( const CTakeDamageInfo &info ); bool IsFriend( CBaseEntity *pEntity );
void UpdateLight( bool bTurnOn, unsigned int r, unsigned int g, unsigned int b, unsigned int a ); bool IsLightOn() { return m_hSprite.Get() != NULL; }
void OnPhysGunPickup( CBasePlayer *pPhysGunUser, PhysGunPickup_t reason = PICKED_UP_BY_CANNON ); void OnPhysGunDrop( CBasePlayer *pPhysGunUser, PhysGunDrop_t reason ); bool ForcePhysgunOpen( CBasePlayer *pPlayer ) { return true; } bool HasPreferredCarryAnglesForPlayer( CBasePlayer *pPlayer ) { return true; } virtual QAngle PreferredCarryAngles( void ) { return vec3_angle; } CBasePlayer *HasPhysicsAttacker( float dt );
bool IsPlayerPlaced() { return m_bPlacedByPlayer; }
bool CreateVPhysics() { VPhysicsInitNormal( SOLID_VPHYSICS, 0, false ); return true; }
void Pickup();
void OpenHooks( bool bSilent = false ); void CloseHooks();
DECLARE_DATADESC();
static string_t gm_iszFloorTurretClassname; static string_t gm_iszGroundTurretClassname;
private: float m_flExplosionDelay;
bool m_bAwake; bool m_bBounce; EHANDLE m_hNearestNPC; EHANDLE m_hSprite; Color m_LastSpriteColor;
float m_flHookPositions; int m_iHookN; int m_iHookE; int m_iHookS; int m_iAllHooks;
CSoundPatch *m_pWarnSound;
bool m_bLockSilently; bool m_bFoeNearest;
float m_flIgnoreWorldTime;
bool m_bDisarmed;
bool m_bPlacedByPlayer;
bool m_bHeldByPhysgun;
int m_iFlipAttempts; int m_iModification;
CHandle<CBasePlayer> m_hPhysicsAttacker; float m_flLastPhysicsInfluenceTime;
float m_flTimeGrabbed; IPhysicsConstraint *m_pConstraint; int m_iMineState;
COutputEvent m_OnPulledUp; void InputDisarm( inputdata_t &inputdata ); };
#endif // COMBINE_MINE_H
|