summaryrefslogtreecommitdiff
path: root/game/client/tf/tf_hud_escort.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/client/tf/tf_hud_escort.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/client/tf/tf_hud_escort.h')
-rw-r--r--game/client/tf/tf_hud_escort.h294
1 files changed, 294 insertions, 0 deletions
diff --git a/game/client/tf/tf_hud_escort.h b/game/client/tf/tf_hud_escort.h
new file mode 100644
index 0000000..dc705d8
--- /dev/null
+++ b/game/client/tf/tf_hud_escort.h
@@ -0,0 +1,294 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef TF_HUD_ESCORT_H
+#define TF_HUD_ESCORT_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <vgui_controls/EditablePanel.h>
+#include <vgui_controls/ImagePanel.h>
+#include "tf_controls.h"
+#include "GameEventListener.h"
+#include "c_tf_objective_resource.h"
+#include "IconPanel.h"
+#include "hud_controlpointicons.h"
+#include "tf_gamerules.h"
+#include "proxyentity.h"
+#include "materialsystem/imaterial.h"
+#include "materialsystem/imaterialvar.h"
+
+class CEscortHillPanel : public vgui::Panel, public CGameEventListener
+{
+ DECLARE_CLASS_SIMPLE( CEscortHillPanel, vgui::Panel );
+public:
+ CEscortHillPanel( vgui::Panel *parent, const char *name );
+
+ virtual void Paint( void );
+ virtual void PerformLayout( void );
+
+ void SetHillNumber( int nHill ){ m_nHill = nHill; }
+ void SetTeamNumber( int nTeam ){ m_nTeam = nTeam; }
+
+ virtual void OnTick( void );
+
+public: // CGameEventListener:
+ virtual void FireGameEvent( IGameEvent *event );
+
+private:
+ void UpdateHillAnimations( bool bOnHill );
+
+private:
+ int m_iTexture;
+ int m_nHill; // hill number this panel represents
+ int m_nTeam;
+
+ bool m_bOnHill;
+ bool m_bFadingOut;
+
+ float m_flUVScroll;
+ float m_flUVW;
+ int m_nPanelWide;
+ int m_nPanelTall;
+ int m_bDownhill;
+};
+
+class CEscortStatusTeardrop : public vgui::EditablePanel
+{
+ DECLARE_CLASS_SIMPLE( CEscortStatusTeardrop, vgui::EditablePanel );
+public:
+ CEscortStatusTeardrop(Panel *parent);
+
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+ virtual bool IsVisible( void );
+
+ void SetupForPoint( int iCPIndex );
+ void UpdateBarText( int iCPIndex );
+
+private:
+ vgui::Label *m_pBarText;
+ CIconPanel *m_pTeardrop;
+ CIconPanel *m_pBlocked;
+ vgui::ImagePanel *m_pCapping;
+ int m_iOrgHeight;
+ int m_iMidGroupIndex;
+};
+
+class CTFHudEscortProgressBar : public vgui::ImagePanel
+{
+public:
+ DECLARE_CLASS_SIMPLE( CTFHudEscortProgressBar, vgui::ImagePanel );
+
+ CTFHudEscortProgressBar( vgui::Panel *parent, const char *name );
+
+ virtual void Paint();
+ void SetPercentage( float flPercentage ){ m_flPercent = flPercentage; }
+
+ void SetTeam( int nTeam );
+
+private:
+
+ float m_flPercent;
+ int m_iTexture;
+ int m_nTeam;
+};
+
+class CSimpleControlPoint : public vgui::ImagePanel
+{
+ DECLARE_CLASS_SIMPLE( CSimpleControlPoint, vgui::ImagePanel );
+public:
+
+ CSimpleControlPoint(Panel *parent, const char *name, int index) : vgui::ImagePanel( parent, name )
+ {
+ SetShouldScaleImage( true );
+ m_iCPIndex = index;
+ m_bForceOpaque = false;
+ }
+
+ virtual bool IsVisible( void )
+ {
+ if ( IsInFreezeCam() == true )
+ return false;
+
+ return BaseClass::IsVisible();
+ }
+
+ void SetCPIndex( int index )
+ {
+ m_iCPIndex = index;
+ }
+
+ void UpdateImage( void )
+ {
+ int iOwner = ObjectiveResource()->GetOwningTeam( m_iCPIndex );
+ bool bMultipleTrains = ( TFGameRules() && TFGameRules()->HasMultipleTrains() ) ? true : false;
+
+ const char *szMatName = "";
+ switch ( iOwner )
+ {
+ case TF_TEAM_BLUE:
+ if ( !bMultipleTrains && !m_bForceOpaque )
+ {
+ szMatName = "hud/cart_point_blue";
+ }
+ else
+ {
+ szMatName = "hud/cart_point_blue_opaque";
+ }
+ break;
+ case TF_TEAM_RED:
+ if ( !bMultipleTrains && !m_bForceOpaque )
+ {
+ szMatName = "hud/cart_point_red";
+ }
+ else
+ {
+ szMatName = "hud/cart_point_red_opaque";
+ }
+ break;
+ default:
+ if ( !bMultipleTrains && !m_bForceOpaque )
+ {
+ szMatName = "hud/cart_point_neutral";
+ }
+ else
+ {
+ szMatName = "hud/cart_point_neutral_opaque";
+ }
+ break;
+ }
+
+ SetImage( VarArgs("..\\%s", szMatName ) );
+ }
+
+ int GetCapIndex( void ) { return m_iCPIndex; }
+ void SetForceOpaqueImages( bool state )
+ {
+ m_bForceOpaque = state;
+ UpdateImage();
+ }
+
+private:
+ int m_iCPIndex;
+ bool m_bForceOpaque;
+};
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+class CTFHudEscort : public vgui::EditablePanel, public CGameEventListener
+{
+ DECLARE_CLASS_SIMPLE( CTFHudEscort, vgui::EditablePanel );
+
+public:
+
+ CTFHudEscort( vgui::Panel *parent, const char *name );
+ ~CTFHudEscort();
+
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+ virtual void PerformLayout();
+ virtual bool IsVisible( void );
+ virtual void Reset(){ m_iCurrentCP = -1; }
+ void OnTick();
+
+ void UpdateCPImages( void );
+ void UpdateStatusTeardropFor( int iIndex );
+
+ void SetTeam( int nTeam )
+ {
+ m_nTeam = nTeam;
+ if ( m_pProgressBar )
+ {
+ m_pProgressBar->SetTeam( m_nTeam );
+ }
+ }
+
+ void SetTopPanel( bool bTopPanel )
+ {
+ m_bTopPanel = bTopPanel;
+ }
+
+public: // CGameEventListener:
+ virtual void FireGameEvent( IGameEvent *event );
+
+private:
+ void UpdateAlarmAnimations( void );
+
+private:
+ int m_iSpeedLevel; // how fast is the escorted object moving
+ float m_flProgress; // left to right progress percent
+ CInterpolatedVar<float> m_flProgressHistory;
+
+ vgui::EditablePanel *m_pEscortItemPanel;
+
+ CUtlVector<CSimpleControlPoint *> m_Icons;
+ bool m_bHaveValidPointPositions;
+
+ vgui::ImagePanel *m_pSpeedBackwards;
+
+ vgui::ImagePanel *m_pCapPlayerImage;
+ CExLabel *m_pCapNumPlayers;
+ vgui::ImagePanel *m_pBlocked;
+
+ vgui::ImagePanel *m_pCPTemplate;
+
+ vgui::ImagePanel *m_pLevelBar;
+
+ CEscortStatusTeardrop *m_pStatus;
+ int m_iCurrentCP;
+
+ CControlPointIconSwoop *m_pHilightSwoop;
+ bool m_bShowSwoop;
+
+ float m_flRecedeTime;
+
+ vgui::ImagePanel *m_pEscortItemImage;
+ vgui::ImagePanel *m_pEscortItemImageBottom;
+ vgui::ImagePanel *m_pHomeCPIcon;
+
+ int m_nTeam;
+
+ bool m_bMultipleTrains; // stored to compare against what TFGamerules says...
+
+ int m_iBlueMaterialIndex; // blue material for multiple tracks colored overlay
+ int m_iRedMaterialIndex; // red material for multiple tracks colored overlay
+
+ CTFHudEscortProgressBar *m_pProgressBar;
+ CEscortHillPanel *m_pHillPanels[TEAM_TRAIN_MAX_HILLS];
+
+ vgui::ImagePanel *m_pEscortItemImageAlert;
+ bool m_bAlarm;
+ bool m_bTopPanel;
+
+ int m_nNumHills;
+};
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+class CTFHudMultipleEscort : public vgui::EditablePanel, public CGameEventListener
+{
+ DECLARE_CLASS_SIMPLE( CTFHudMultipleEscort, vgui::EditablePanel );
+
+public:
+ CTFHudMultipleEscort( vgui::Panel *parent, const char *name );
+ ~CTFHudMultipleEscort();
+
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+ virtual void SetVisible( bool state );
+ virtual void Reset();
+
+public: // IGameEventListener Interface
+ virtual void FireGameEvent( IGameEvent * event );
+
+private:
+ CTFHudEscort *m_pBluePanel;
+ CTFHudEscort *m_pRedPanel;
+};
+
+#endif // TF_HUD_ESCORT_H