initial
This commit is contained in:
247
game/shared/cstrike15/weapon_c4.h
Normal file
247
game/shared/cstrike15/weapon_c4.h
Normal file
@@ -0,0 +1,247 @@
|
||||
//========= Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef WEAPON_C4_H
|
||||
#define WEAPON_C4_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
|
||||
#include "weapon_csbase.h"
|
||||
#include "utlvector.h"
|
||||
|
||||
#define NUM_BEEPS 7
|
||||
|
||||
#if defined( CLIENT_DLL )
|
||||
|
||||
#define CC4 C_C4
|
||||
|
||||
#else
|
||||
|
||||
// ------------------------------------------------------------------------------------------ //
|
||||
// CPlantedC4 class.
|
||||
// ------------------------------------------------------------------------------------------ //
|
||||
|
||||
class CPlantedC4 : public CBaseAnimating
|
||||
{
|
||||
public:
|
||||
DECLARE_CLASS( CPlantedC4, CBaseAnimating );
|
||||
DECLARE_DATADESC();
|
||||
DECLARE_SERVERCLASS();
|
||||
|
||||
DECLARE_PREDICTABLE();
|
||||
|
||||
CPlantedC4();
|
||||
virtual ~CPlantedC4();
|
||||
|
||||
virtual void Spawn();
|
||||
|
||||
virtual int UpdateTransmitState();
|
||||
virtual void SetTransmit( CCheckTransmitInfo *pInfo, bool bAlways );
|
||||
virtual int ShouldTransmit( const CCheckTransmitInfo *pInfo );
|
||||
|
||||
static CPlantedC4* ShootSatchelCharge( CCSPlayer *pevOwner, Vector vecStart, QAngle vecAngles );
|
||||
virtual void Precache();
|
||||
|
||||
// Set these flags so CTs can use the C4 to disarm it.
|
||||
virtual int ObjectCaps() { return BaseClass::ObjectCaps() | (FCAP_CONTINUOUS_USE | FCAP_ONOFF_USE); }
|
||||
|
||||
void SetBombSiteIndex( int iIndex ){ m_iBombSiteIndex = iIndex; }
|
||||
|
||||
inline bool IsBombActive( void ) { return m_bBombTicking; }
|
||||
|
||||
CCSPlayer* GetPlanter( void ) { return m_pPlanter; }
|
||||
void SetPlanter( CCSPlayer* player ) { m_pPlanter = player; }
|
||||
|
||||
CCSPlayer* GetDefuser( void ) { return m_pBombDefuser; }
|
||||
|
||||
void SetPlantedAfterPickup( bool plantedAfterPickup ) { m_bPlantedAfterPickup = plantedAfterPickup; }
|
||||
|
||||
public:
|
||||
|
||||
CNetworkVar( bool, m_bBombTicking );
|
||||
CNetworkVar( float, m_flC4Blow );
|
||||
|
||||
COutputEvent m_OnBombDefused;
|
||||
COutputEvent m_OnBombBeginDefuse;
|
||||
COutputEvent m_OnBombDefuseAborted;
|
||||
|
||||
protected:
|
||||
virtual void Init( CCSPlayer *pevOwner, Vector vecStart, QAngle vecAngles, bool bTrainingPlacedByPlayer );
|
||||
// used for the training map where the map spawns the bomb and sets the timer manually
|
||||
virtual void ActivateSetTimerLength( float flTimerLength );
|
||||
|
||||
void C4Think();
|
||||
|
||||
bool m_bTrainingPlacedByPlayer;
|
||||
bool m_bHasExploded;
|
||||
|
||||
private:
|
||||
|
||||
// This becomes the think function when the timer has expired and it is about to explode.
|
||||
void DetonateThink();
|
||||
virtual void Explode( trace_t *pTrace, int bitsDamageType );
|
||||
|
||||
void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
|
||||
|
||||
// Replicate timer length to the client for effects
|
||||
CNetworkVar( float, m_flTimerLength );
|
||||
|
||||
// Info for defusing.
|
||||
bool m_bBeingDefused;
|
||||
CHandle<CCSPlayer> m_pBombDefuser;
|
||||
float m_fLastDefuseTime;
|
||||
int m_iBombSiteIndex;
|
||||
|
||||
CNetworkVar( float, m_flDefuseLength ); //How long does the defuse take? Depends on if a defuser was used
|
||||
CNetworkVar( float, m_flDefuseCountDown ); //What time does the defuse complete?
|
||||
CNetworkVar( bool, m_bBombDefused );
|
||||
CNetworkVar( CHandle<CCSPlayer>, m_hBombDefuser );
|
||||
|
||||
// Control panel
|
||||
void GetControlPanelInfo( int nPanelIndex, const char *&pPanelName );
|
||||
void GetControlPanelClassName( int nPanelIndex, const char *&pPanelName );
|
||||
void SpawnControlPanels( void );
|
||||
void RemoveControlPanels( void );
|
||||
|
||||
typedef CHandle<CVGuiScreen> ScreenHandle_t;
|
||||
CUtlVector<ScreenHandle_t> m_hScreens;
|
||||
|
||||
int m_iProgressBarTime;
|
||||
bool m_bVoiceAlertFired;
|
||||
|
||||
// [tj] We need to store who planted the bomb so we can track who deserves credits for the kills
|
||||
CHandle<CCSPlayer> m_pPlanter;
|
||||
|
||||
// [tj] We need to know if this was planted by a player who recovered the bomb
|
||||
bool m_bPlantedAfterPickup;
|
||||
};
|
||||
|
||||
// ------------------------------------------------------------------------------------------ //
|
||||
// CPlantedC4 class.
|
||||
// ------------------------------------------------------------------------------------------ //
|
||||
|
||||
class CPlantedC4Training : public CPlantedC4
|
||||
{
|
||||
public:
|
||||
DECLARE_CLASS( CPlantedC4Training, CPlantedC4 );
|
||||
DECLARE_DATADESC();
|
||||
|
||||
//DECLARE_SERVERCLASS();
|
||||
|
||||
DECLARE_PREDICTABLE();
|
||||
|
||||
//CPlantedC4Training();
|
||||
//virtual ~CPlantedC4Training();
|
||||
void InputActivateSetTimerLength( inputdata_t &inputdata );
|
||||
|
||||
COutputEvent m_OnBombExploded; //Fired when the bomb explodes
|
||||
|
||||
protected:
|
||||
//virtual void Init( CCSPlayer *pevOwner, Vector vecStart, QAngle vecAngles );
|
||||
virtual void Explode( trace_t *pTrace, int bitsDamageType );
|
||||
};
|
||||
|
||||
extern CUtlVector< CPlantedC4* > g_PlantedC4s;
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#define WEAPON_C4_CLASSNAME "weapon_c4"
|
||||
#define PLANTED_C4_CLASSNAME "planted_c4"
|
||||
#define PLANTED_C4TRAINING_CLASSNAME "planted_c4_training"
|
||||
|
||||
class CC4 : public CWeaponCSBase
|
||||
{
|
||||
public:
|
||||
DECLARE_CLASS( CC4, CWeaponCSBase );
|
||||
DECLARE_NETWORKCLASS();
|
||||
DECLARE_PREDICTABLE();
|
||||
|
||||
CC4();
|
||||
virtual ~CC4();
|
||||
|
||||
virtual void Spawn();
|
||||
|
||||
void ItemPostFrame();
|
||||
virtual void WeaponReset( void );
|
||||
virtual void PrimaryAttack();
|
||||
virtual void WeaponIdle();
|
||||
virtual void UpdateShieldState( void );
|
||||
virtual float GetMaxSpeed() const;
|
||||
|
||||
virtual CSWeaponID GetCSWeaponID( void ) const { return WEAPON_C4; }
|
||||
|
||||
virtual bool Deploy( void ); // returns true is deploy was successful
|
||||
virtual bool Holster( CBaseCombatWeapon *pSwitchingTo = NULL );
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
|
||||
void ClientThink( void );
|
||||
virtual void OnDataChanged( DataUpdateType_t type );
|
||||
virtual void UpdateOnRemove( void );
|
||||
virtual bool OnFireEvent( C_BaseViewModel *pViewModel, const Vector& origin, const QAngle& angles, int event, const char *options );
|
||||
char *GetScreenText( void );
|
||||
char m_szScreenText[32];
|
||||
|
||||
CUtlReference<CNewParticleEffect> m_hC4LED;
|
||||
void CreateLEDEffect( void );
|
||||
void RemoveLEDEffect( void );
|
||||
EHANDLE m_hParticleEffectOwner;
|
||||
|
||||
virtual Vector GetGlowColor( void ) { return Vector( (240.0f/255.0f), (225.0f/255.0f), (90.0f/255.0f) ); }
|
||||
#else
|
||||
virtual void Precache();
|
||||
virtual int UpdateTransmitState();
|
||||
virtual int ShouldTransmit( const CCheckTransmitInfo *pInfo );
|
||||
virtual void GetControlPanelInfo( int nPanelIndex, const char *&pPanelName );
|
||||
virtual unsigned int PhysicsSolidMaskForEntity( void ) const;
|
||||
|
||||
virtual bool ShouldRemoveOnRoundRestart();
|
||||
|
||||
void SetDroppedFromDeath (bool droppedFromDeath) { m_bDroppedFromDeath = droppedFromDeath; }
|
||||
|
||||
void Think( void );
|
||||
void ResetToLastValidPlayerHeldPosition();
|
||||
virtual void PhysicsTouchTriggers(const Vector *pPrevAbsOrigin = NULL);
|
||||
|
||||
private:
|
||||
Vector m_vecLastValidPlayerHeldPosition;
|
||||
public:
|
||||
|
||||
#endif
|
||||
|
||||
void AbortBombPlant();
|
||||
|
||||
void PlayArmingBeeps( void );
|
||||
void PlayPlantInitSound( void );
|
||||
virtual void OnPickedUp( CBaseCombatCharacter *pNewOwner );
|
||||
virtual void Drop( const Vector &vecVelocity );
|
||||
|
||||
CNetworkVar( bool, m_bStartedArming );
|
||||
CNetworkVar( float, m_fArmedTime );
|
||||
CNetworkVar( bool, m_bBombPlacedAnimation );
|
||||
CNetworkVar( bool, m_bShowC4LED );
|
||||
CNetworkVar( bool, m_bIsPlantingViaUse );
|
||||
|
||||
virtual bool IsRemoveable( void ) { return false; }
|
||||
|
||||
private:
|
||||
bool m_bPlayedArmingBeeps[NUM_BEEPS];
|
||||
bool m_bBombPlanted;
|
||||
|
||||
// [tj] we want to store if this bomb was dropped because the original owner was killed
|
||||
bool m_bDroppedFromDeath;
|
||||
|
||||
private:
|
||||
|
||||
CC4( const CC4 & );
|
||||
};
|
||||
|
||||
|
||||
#endif // WEAPON_C4_H
|
||||
Reference in New Issue
Block a user