You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
3.6 KiB
150 lines
3.6 KiB
![]()
4 years ago
|
//========= 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
|