source-engine/game/shared/hl1/hl1mp_weapon_satchel.h
2022-04-16 12:05:19 +03:00

108 lines
2.4 KiB
C++

//========= 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