summaryrefslogtreecommitdiff
path: root/game/client/tf/tf_hud_playerstatus.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_playerstatus.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_playerstatus.h')
-rw-r--r--game/client/tf/tf_hud_playerstatus.h241
1 files changed, 241 insertions, 0 deletions
diff --git a/game/client/tf/tf_hud_playerstatus.h b/game/client/tf/tf_hud_playerstatus.h
new file mode 100644
index 0000000..1a54865
--- /dev/null
+++ b/game/client/tf/tf_hud_playerstatus.h
@@ -0,0 +1,241 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef TF_HUD_PLAYERSTATUS_H
+#define TF_HUD_PLAYERSTATUS_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <vgui_controls/ImagePanel.h>
+#include "tf_controls.h"
+#include "tf_imagepanel.h"
+#include "GameEventListener.h"
+
+class C_TFPlayer;
+class CTFPlayerModelPanel;
+namespace vgui
+{
+ class Label;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+class CTFClassImage : public vgui::ImagePanel
+{
+public:
+ DECLARE_CLASS_SIMPLE( CTFClassImage, vgui::ImagePanel );
+
+ CTFClassImage( vgui::Panel *parent, const char *name ) : ImagePanel( parent, name )
+ {
+ }
+
+ void SetClass( int iTeam, int iClass, int iCloakstate );
+};
+
+//-----------------------------------------------------------------------------
+// Purpose: Displays player class data
+//-----------------------------------------------------------------------------
+class CTFHudPlayerClass : public vgui::EditablePanel, public CGameEventListener
+{
+ DECLARE_CLASS_SIMPLE( CTFHudPlayerClass, EditablePanel );
+
+public:
+
+ CTFHudPlayerClass( Panel *parent, const char *name );
+
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+ virtual void Reset();
+
+public: // IGameEventListener Interface
+ virtual void FireGameEvent( IGameEvent * event );
+
+protected:
+
+ virtual void OnThink();
+
+private:
+ void UpdateModelPanel();
+
+ float m_flNextThink;
+
+ CTFClassImage *m_pClassImage;
+ CTFImagePanel *m_pClassImageBG;
+ CTFImagePanel *m_pSpyImage; // used when spies are disguised
+ CTFImagePanel *m_pSpyOutlineImage;
+ CTFPlayerModelPanel *m_pPlayerModelPanel;
+ CTFImagePanel *m_pPlayerModelPanelBG;
+ EditablePanel *m_pCarryingWeaponPanel;
+ CExLabel *m_pCarryingLabel;
+ vgui::Label *m_pCarryingOwnerLabel;
+ CTFImagePanel *m_pCarryingBG;
+
+ int m_nTeam;
+ int m_nClass;
+ int m_nDisguiseTeam;
+ int m_nDisguiseClass;
+ EHANDLE m_hDisguiseWeapon;
+ int m_nCloakLevel;
+ int m_nLoadoutPosition;
+ int m_nKillStreak;
+
+#ifdef STAGING_ONLY
+ int m_nLOD;
+#endif // STAGING_ONLY
+
+ bool m_bUsePlayerModel;
+};
+
+//-----------------------------------------------------------------------------
+// Purpose: Clips the health image to the appropriate percentage
+//-----------------------------------------------------------------------------
+class CTFHealthPanel : public vgui::Panel
+{
+public:
+ DECLARE_CLASS_SIMPLE( CTFHealthPanel, vgui::Panel );
+
+ CTFHealthPanel( vgui::Panel *parent, const char *name );
+ virtual void Paint();
+ void SetHealth( float flHealth ){ m_flHealth = ( flHealth <= 1.0 ) ? flHealth : 1.0f; }
+
+private:
+
+ float m_flHealth; // percentage from 0.0 -> 1.0
+ int m_iMaterialIndex;
+ int m_iDeadMaterialIndex;
+};
+
+enum BuffClass_t
+{
+ BUFF_CLASS_BULLET_RESIST,
+ BUFF_CLASS_BLAST_RESIST,
+ BUFF_CLASS_FIRE_RESIST,
+ BUFF_CLASS_SOLDIER_OFFENSE,
+ BUFF_CLASS_SOLDIER_DEFENSE,
+ BUFF_CLASS_SOLDIER_HEALTHONHIT,
+ DEBUFF_CLASS_STUNNED,
+ DEBUFF_CLASS_SPY_MARKED,
+ BUFF_CLASS_PARACHUTE,
+ RUNE_CLASS_STRENGTH,
+ RUNE_CLASS_HASTE,
+ RUNE_CLASS_REGEN,
+ RUNE_CLASS_RESIST,
+ RUNE_CLASS_VAMPIRE,
+ RUNE_CLASS_REFLECT,
+ RUNE_CLASS_PRECISION,
+ RUNE_CLASS_AGILITY,
+ RUNE_CLASS_KNOCKOUT,
+ RUNE_CLASS_KING,
+ RUNE_CLASS_PLAGUE,
+ RUNE_CLASS_SUPERNOVA,
+};
+
+struct CTFBuffInfo
+{
+public:
+ CTFBuffInfo( ETFCond eCond, BuffClass_t eClass, vgui::ImagePanel* pPanel, const char* pzsBlueImage = NULL, const char* pzsRedImage = NULL )
+ {
+ m_eCond = eCond;
+ m_eClass = eClass;
+ m_pImagePanel = pPanel;
+ m_pzsRedImage = pzsRedImage;
+ m_pzsBlueImage = pzsBlueImage;
+ }
+
+ void Update( C_TFPlayer *pPlayer );
+
+ ETFCond m_eCond;
+ BuffClass_t m_eClass;
+ vgui::ImagePanel *m_pImagePanel;
+ const char* m_pzsRedImage;
+ const char* m_pzsBlueImage;
+};
+
+//-----------------------------------------------------------------------------
+// Purpose: Displays player health data
+//-----------------------------------------------------------------------------
+class CTFHudPlayerHealth : public vgui::EditablePanel
+{
+ DECLARE_CLASS_SIMPLE( CTFHudPlayerHealth, EditablePanel );
+
+public:
+
+ CTFHudPlayerHealth( Panel *parent, const char *name );
+ ~CTFHudPlayerHealth();
+
+ virtual const char *GetResFilename( void ) { return "resource/UI/HudPlayerHealth.res"; }
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+ virtual void Reset();
+
+ void SetHealth( int iNewHealth, int iMaxHealth, int iMaxBuffedHealth );
+ void SetLevel( int nLevel );
+ void HideHealthBonusImage( void );
+ void SetBuilding( bool bBuilding ) { m_bBuilding = bBuilding; }
+ void SetAllowAnimations( bool bValue ) { m_bAnimate = bValue; }
+
+protected:
+
+ virtual void OnThink();
+
+protected:
+ float m_flNextThink;
+
+private:
+ CTFHealthPanel *m_pHealthImage;
+ vgui::ImagePanel *m_pHealthBonusImage;
+ vgui::ImagePanel *m_pHealthImageBG;
+ vgui::ImagePanel *m_pBuildingHealthImageBG;
+ vgui::ImagePanel *m_pBleedImage;
+ vgui::ImagePanel *m_pHookBleedImage;
+ vgui::ImagePanel *m_pMilkImage;
+ vgui::ImagePanel *m_pMarkedForDeathImage;
+ vgui::ImagePanel *m_pMarkedForDeathImageSilent;
+ vgui::ImagePanel *m_pWheelOfDoomImage;
+ CExLabel *m_pPlayerLevelLabel;
+
+ CUtlVector<CTFBuffInfo*> m_vecBuffInfo;
+
+ int m_nHealth;
+ int m_nMaxHealth;
+
+ int m_nBonusHealthOrigX;
+ int m_nBonusHealthOrigY;
+ int m_nBonusHealthOrigW;
+ int m_nBonusHealthOrigH;
+
+ bool m_bBuilding;
+ int m_iAnimState;
+ bool m_bAnimate;
+
+ CPanelAnimationVar( int, m_nHealthBonusPosAdj, "HealthBonusPosAdj", "25" );
+ CPanelAnimationVar( float, m_flHealthDeathWarning, "HealthDeathWarning", "0.49" );
+ CPanelAnimationVar( Color, m_clrHealthDeathWarningColor, "HealthDeathWarningColor", "HUDDeathWarning" );
+
+ void UpdateHalloweenStatus( void );
+};
+
+//-----------------------------------------------------------------------------
+// Purpose: Parent panel for the player class/health displays
+//-----------------------------------------------------------------------------
+class CTFHudPlayerStatus : public CHudElement, public vgui::EditablePanel
+{
+ DECLARE_CLASS_SIMPLE( CTFHudPlayerStatus, vgui::EditablePanel );
+
+public:
+ CTFHudPlayerStatus( const char *pElementName );
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+ virtual void Reset();
+ virtual bool ShouldDraw( void ) OVERRIDE;
+
+private:
+
+ CTFHudPlayerClass *m_pHudPlayerClass;
+ CTFHudPlayerHealth *m_pHudPlayerHealth;
+};
+
+#endif // TF_HUD_PLAYERSTATUS_H \ No newline at end of file