//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #ifndef HL1_WEAPON_SATCHEL_H #define HL1_WEAPON_SATCHEL_H #ifdef _WIN32 #pragma once #endif #ifndef CLIENT_DLL #include "hl1_basegrenade.h" #include "hl1_basecombatweapon_shared.h" #endif #ifdef CLIENT_DLL #define CWeaponSatchel C_WeaponSatchel #endif //----------------------------------------------------------------------------- // CWeaponSatchel //----------------------------------------------------------------------------- class CWeaponSatchel : public CBaseHL1CombatWeapon { DECLARE_CLASS( CWeaponSatchel, CBaseHL1CombatWeapon ); DECLARE_NETWORKCLASS(); DECLARE_PREDICTABLE(); public: CWeaponSatchel( void ); void Equip( CBaseCombatCharacter *pOwner ); bool HasAnyAmmo( void ); bool CanDeploy( void ); void Precache( void ); void PrimaryAttack( void ); void SecondaryAttack( void ); void WeaponIdle( void ); bool Deploy( void ); bool Holster( CBaseCombatWeapon *pSwitchingTo = NULL ); void ItemPostFrame( void ); const char *GetViewModel( int viewmodelindex = 0 ) const; const char *GetWorldModel( void ) const; bool HasChargeDeployed() { return ( m_iChargeReady != 0 ); } void OnRestore( void ); // DECLARE_SERVERCLASS(); DECLARE_DATADESC(); private: void Throw( void ); void ActivateSatchelModel( void ); void ActivateRadioModel( void ); private: CNetworkVar( int, m_iRadioViewIndex ); CNetworkVar( int, m_iRadioWorldIndex ); CNetworkVar( int, m_iSatchelViewIndex ); CNetworkVar( int, m_iSatchelWorldIndex ); CNetworkVar( int, m_iChargeReady ); }; #ifndef CLIENT_DLL //----------------------------------------------------------------------------- // CSatchelCharge //----------------------------------------------------------------------------- class CSatchelCharge : public CHL1BaseGrenade { public: DECLARE_CLASS( CSatchelCharge, CHL1BaseGrenade ); CSatchelCharge(); void Spawn( void ); void Precache( void ); void SatchelTouch( CBaseEntity *pOther ); void SatchelThink( void ); void SatchelUse( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ); DECLARE_DATADESC(); private: Vector m_vLastPosition; float m_flNextBounceSoundTime; bool m_bInAir; private: void BounceSound( void ); void UpdateSlideSound( void ); void Deactivate( void ); }; #endif #endif // HL1_WEAPON_SATCHEL_H