diff options
Diffstat (limited to 'game/client/tf/c_obj_sentrygun.h')
| -rw-r--r-- | game/client/tf/c_obj_sentrygun.h | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/game/client/tf/c_obj_sentrygun.h b/game/client/tf/c_obj_sentrygun.h new file mode 100644 index 0000000..1cbcce7 --- /dev/null +++ b/game/client/tf/c_obj_sentrygun.h @@ -0,0 +1,150 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef C_OBJ_SENTRYGUN_H +#define C_OBJ_SENTRYGUN_H +#ifdef _WIN32 +#pragma once +#endif + +#include "c_baseobject.h" +#include "ObjectControlPanel.h" +#include "c_tf_projectile_rocket.h" +#include "tempent.h" +#include "c_te_legacytempents.h" +#include "c_tf_player.h" + +class C_MuzzleFlashModel; + +enum +{ + SHIELD_NONE = 0, + SHIELD_NORMAL, // 33% damage taken + SHIELD_MAX, // 10% damage taken, no inactive period +}; + +//----------------------------------------------------------------------------- +// Purpose: Sentry object +//----------------------------------------------------------------------------- +class C_ObjectSentrygun : public C_BaseObject +{ + DECLARE_CLASS( C_ObjectSentrygun, C_BaseObject ); +public: + DECLARE_CLIENTCLASS(); + + C_ObjectSentrygun(); + + virtual void UpdateOnRemove( void ); + + void GetAmmoCount( int &iShells, int &iMaxShells, int &iRockets, int & iMaxRockets ); + + virtual BuildingHudAlert_t GetBuildingAlertLevel( void ); + + virtual const char *GetHudStatusIcon( void ); + + int GetKills( void ) { return m_iKills; } + int GetAssists( void ) { return m_iAssists; } + + virtual void GetShadowRenderBounds( Vector &mins, Vector &maxs, ShadowType_t shadowType ); + + virtual CStudioHdr *OnNewModel( void ); + virtual void UpdateDamageEffects( BuildingDamageLevel_t damageLevel ); + + virtual void OnPlacementStateChanged( bool bValidPlacement ); + + void DebugDamageParticles(); + + virtual const char* GetStatusName() const; + + virtual void OnPreDataChanged( DataUpdateType_t updateType ); + virtual void OnDataChanged( DataUpdateType_t updateType ); + + virtual bool IsUpgrading( void ) const { return ( m_iState == SENTRY_STATE_UPGRADING ); } + + void CreateLaserBeam( void ); + void DestroyLaserBeam( void ); + + virtual void SetDormant( bool bDormant ); + void CreateShield( void ); + void DestroyShield( void ); + + void CreateSiren( void ); + void DestroySiren( void ); + + virtual void OnGoActive( void ); + virtual void OnGoInactive( void ); + virtual void OnStartDisabled( void ); + virtual void OnEndDisabled( void ); + + virtual void ClientThink( void ); + + void CheckNearMiss( Vector vecStart, Vector vecEnd ); + + // ITargetIDProvidesHint +public: + virtual void DisplayHintTo( C_BasePlayer *pPlayer ); + + virtual void BuildTransformations( CStudioHdr *hdr, Vector *pos, Quaternion q[], const matrix3x4_t& cameraTransform, int boneMask, CBoneBitList &boneComputed ); + +private: + + virtual void UpgradeLevelChanged(); + +private: + int m_iState; + + int m_iAmmoShells; + int m_iMaxAmmoShells; + int m_iAmmoRockets; + + int m_iKills; + int m_iAssists; + + int m_iPlacementBodygroup; + int m_iPlacementBodygroup_Mini; + + int m_iOldBodygroups; + + bool m_bPlayerControlled; + bool m_bOldPlayerControlled; + uint32 m_nShieldLevel; + uint32 m_nOldShieldLevel; + bool m_bOldCarried; + + bool m_bPDQSentry; + + int m_iOldModelIndex; + + bool m_bNearMiss; + bool m_bRecreateShield; + bool m_bRecreateLaserBeam; + float m_flNextNearMissCheck; + + C_LocalTempEntity *m_pTempShield; + + HPARTICLEFFECT m_hSirenEffect; + HPARTICLEFFECT m_hShieldEffect; + HPARTICLEFFECT m_hLaserBeamEffect; + CNetworkHandle( CBaseEntity, m_hEnemy ); + CNetworkHandle( C_TFPlayer, m_hAutoAimTarget ); + + Vector m_vecLaserBeamPos; + +private: + C_ObjectSentrygun( const C_ObjectSentrygun & ); // not defined, not accessible +}; + +class C_TFProjectile_SentryRocket : public C_TFProjectile_Rocket +{ + DECLARE_CLASS( C_TFProjectile_SentryRocket, C_TFProjectile_Rocket ); +public: + DECLARE_CLIENTCLASS(); + + virtual void CreateRocketTrails( void ) {} +}; + +#endif //C_OBJ_SENTRYGUN_H
\ No newline at end of file |