summaryrefslogtreecommitdiff
path: root/game/server/tf/player_vs_environment/tf_tank_boss.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/server/tf/player_vs_environment/tf_tank_boss.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/server/tf/player_vs_environment/tf_tank_boss.h')
-rw-r--r--game/server/tf/player_vs_environment/tf_tank_boss.h131
1 files changed, 131 insertions, 0 deletions
diff --git a/game/server/tf/player_vs_environment/tf_tank_boss.h b/game/server/tf/player_vs_environment/tf_tank_boss.h
new file mode 100644
index 0000000..005a490
--- /dev/null
+++ b/game/server/tf/player_vs_environment/tf_tank_boss.h
@@ -0,0 +1,131 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+#ifndef TF_TANK_BOSS_H
+#define TF_TANK_BOSS_H
+
+#include "tf_population_manager.h"
+#include "tf_base_boss.h"
+#include "tf_tank_boss_body.h"
+#include "tf_achievementdata.h"
+
+//----------------------------------------------------------------------------
+class CTFTankBoss : public CTFBaseBoss
+{
+public:
+ DECLARE_CLASS( CTFTankBoss, CTFBaseBoss );
+ DECLARE_SERVERCLASS();
+ DECLARE_DATADESC();
+
+ CTFTankBoss();
+ virtual ~CTFTankBoss();
+
+ virtual void Precache( void );
+ virtual void Spawn( void );
+ virtual void SetSkin( int nSkin ) { if ( m_body ) m_body->SetSkin( nSkin ); }
+
+ virtual void UpdateOnRemove( void );
+
+ virtual void UpdateCollisionBounds( void );
+
+ virtual CTFTankBossBody *GetBodyInterface( void ) const { return m_body; }
+
+ virtual int OnTakeDamage_Alive( const CTakeDamageInfo &rawInfo );
+
+ virtual void Event_Killed( const CTakeDamageInfo &info );
+
+ void TankBossThink( void );
+
+ void SetStartingPathTrackNode( char *name );
+
+ void DefineOnKilledOutput( EventInfo *eventInfo );
+ void DefineOnBombDroppedOutput( EventInfo *eventInfo );
+
+ void SetWaveSpawnPopulator( CWaveSpawnPopulator *pWave ){ m_pWaveSpawnPopulator = pWave; }
+
+ virtual int GetCurrencyValue( void );
+
+ // Input handlers
+ void InputDestroyIfAtCapturePoint( inputdata_t &inputdata );
+ void InputAddCaptureDestroyPostfix( inputdata_t &inputdata );
+
+ void UpdatePingSound( void );
+
+protected:
+ virtual void ModifyDamage( CTakeDamageInfo *info ) const;
+
+private:
+
+ void Explode();
+
+private:
+ CTFTankBossBody *m_body;
+
+ CHandle< CPathTrack > m_startNode;
+ CHandle< CPathTrack > m_endNode;
+ CHandle< CPathTrack > m_goalNode;
+ CUtlVector< float > m_CumulativeDistances;
+ float m_fTotalDistance;
+ int m_nNodeNumber;
+
+ float m_flSpawnTime;
+
+ bool m_isDroppingBomb;
+ float m_flDroppingStart;
+
+ int m_exhaustAttachment;
+ bool m_isSmoking;
+
+ bool m_bIsPlayerKilled;
+ bool m_bPlayedHalfwayAlert;
+ bool m_bPlayedNearAlert;
+
+ int m_lastHealth;
+ int m_damageModelIndex;
+ int m_nDeathAnimPick;
+ char m_szDeathPostfix[ 8 ];
+
+ Vector m_lastRightTrackPos;
+ Vector m_lastLeftTrackPos;
+
+ CountdownTimer m_rumbleTimer;
+
+ EventInfo m_onKilledEventInfo;
+ EventInfo m_onBombDroppedEventInfo;
+ void FirePopFileEvent( EventInfo *eventInfo );
+
+ CHandle< CBaseAnimating > m_bomb;
+ CHandle< CBaseAnimating > m_leftTracks;
+ CHandle< CBaseAnimating > m_rightTracks;
+
+ CountdownTimer m_crushTimer;
+ CWaveSpawnPopulator *m_pWaveSpawnPopulator;
+
+ Vector m_vCollisionMins;
+ Vector m_vCollisionMaxs;
+
+ float m_flLastPingTime;
+
+ static float m_flLastTankAlert;
+
+ CHistoryVector< EntityHistory_t, CEntityHistoryLess, 12 > m_vecDamagers;
+};
+
+
+inline void CTFTankBoss::DefineOnKilledOutput( EventInfo *eventInfo )
+{
+ if ( eventInfo )
+ {
+ m_onKilledEventInfo.m_action = eventInfo->m_action;
+ m_onKilledEventInfo.m_target = eventInfo->m_target;
+ }
+}
+
+inline void CTFTankBoss::DefineOnBombDroppedOutput( EventInfo *eventInfo )
+{
+ if ( eventInfo )
+ {
+ m_onBombDroppedEventInfo.m_action = eventInfo->m_action;
+ m_onBombDroppedEventInfo.m_target = eventInfo->m_target;
+ }
+}
+
+#endif // TF_TANK_BOSS_H