//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: SLAM // // $Workfile: $ // $Date: $ // //----------------------------------------------------------------------------- // $Log: $ // // $NoKeywords: $ //=============================================================================// #ifndef WEAPONSLAM_H #define WEAPONSLAM_H #include "basegrenade_shared.h" #include "weapon_hl2mpbasehlmpcombatweapon.h" enum { SLAM_TRIPMINE_READY, SLAM_SATCHEL_THROW, SLAM_SATCHEL_ATTACH, }; #ifdef CLIENT_DLL #define CWeapon_SLAM C_Weapon_SLAM #endif class CWeapon_SLAM : public CBaseHL2MPCombatWeapon { public: DECLARE_CLASS(CWeapon_SLAM, CBaseHL2MPCombatWeapon); DECLARE_NETWORKCLASS(); DECLARE_PREDICTABLE(); CNetworkVar(int, m_tSlamState); CNetworkVar(bool, m_bDetonatorArmed); CNetworkVar(bool, m_bNeedDetonatorDraw); CNetworkVar(bool, m_bNeedDetonatorHolster); CNetworkVar(bool, m_bNeedReload); CNetworkVar(bool, m_bClearReload); CNetworkVar(bool, m_bThrowSatchel); CNetworkVar(bool, m_bAttachSatchel); CNetworkVar(bool, m_bAttachTripmine); float m_flWallSwitchTime; void Spawn(void); void Precache(void); void PrimaryAttack(void); void SecondaryAttack(void); void WeaponIdle(void); void Weapon_Switch(void); void SLAMThink(void); void SetPickupTouch(void); void SlamTouch(CBaseEntity *pOther); // default weapon touch void ItemPostFrame(void); bool Reload(void); void SetSlamState(int newState); bool CanAttachSLAM(void); // In position where can attach SLAM? bool AnyUndetonatedCharges(void); void StartTripmineAttach(void); void TripmineAttach(void); void StartSatchelDetonate(void); void SatchelDetonate(void); void StartSatchelThrow(void); void StartSatchelAttach(void); void SatchelThrow(void); void SatchelAttach(void); bool Deploy(void); bool Holster(CBaseCombatWeapon *pSwitchingTo = NULL); CWeapon_SLAM(); #ifndef CLIENT_DLL DECLARE_ACTTABLE(); DECLARE_DATADESC(); #endif private: CWeapon_SLAM(const CWeapon_SLAM &); }; #endif // WEAPONSLAM_H