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.
196 lines
6.3 KiB
196 lines
6.3 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//============================================================================= |
|
|
|
#ifndef C_TF_ITEMEFFECTMETER_H |
|
#define C_TF_ITEMEFFECTMETER_H |
|
|
|
#include "cbase.h" |
|
|
|
#include "c_tf_player.h" |
|
#include "c_tf_playerclass.h" |
|
#include "hudelement.h" |
|
#include "iclientmode.h" |
|
#include "tf_weapon_invis.h" |
|
#include <vgui_controls/EditablePanel.h> |
|
#include <vgui_controls/ProgressBar.h> |
|
#include <vgui_controls/Label.h> |
|
|
|
using namespace vgui; |
|
|
|
class CHudItemEffectMeter; |
|
class CItemEffectMeterLogic; |
|
class CItemEffectMeterManager; |
|
|
|
extern CItemEffectMeterManager g_ItemEffectMeterManager; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
class CItemEffectMeterManager : public CGameEventListener |
|
{ |
|
public: |
|
~CItemEffectMeterManager(); |
|
|
|
void ClearExistingMeters(); |
|
void SetPlayer( C_TFPlayer* pPlayer ); |
|
void Update( C_TFPlayer* pPlayer ); |
|
virtual void FireGameEvent( IGameEvent *event ); |
|
int GetNumEnabled( void ); |
|
|
|
private: |
|
CUtlVector< vgui::DHANDLE< CHudItemEffectMeter > > m_Meters; |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
DECLARE_AUTO_LIST( IHudItemEffectMeterAutoList ); |
|
class CHudItemEffectMeter : public CHudElement, public EditablePanel, public IHudItemEffectMeterAutoList |
|
{ |
|
DECLARE_CLASS_SIMPLE( CHudItemEffectMeter, EditablePanel ); |
|
|
|
public: |
|
CHudItemEffectMeter( const char *pszElementName, C_TFPlayer* pPlayer ); |
|
~CHudItemEffectMeter(); |
|
|
|
static void CreateHudElementsForClass( C_TFPlayer* pPlayer, CUtlVector< vgui::DHANDLE< CHudItemEffectMeter > >& outMeters ); |
|
|
|
// Hud Element |
|
virtual void ApplySchemeSettings( IScheme *scheme ); |
|
virtual void PerformLayout(); |
|
virtual bool ShouldDraw( void ); |
|
virtual void Update( C_TFPlayer* pPlayer, const char* pSoundScript = "TFPlayer.ReCharged" ); |
|
|
|
// Effect Meter Logic |
|
virtual bool IsEnabled( void ) { return m_bEnabled; } |
|
virtual const char* GetLabelText( void ); |
|
virtual const char* GetIconName( void ) { return "../hud/ico_stickybomb_red"; } |
|
virtual float GetProgress( void ); |
|
virtual bool ShouldBeep( void ) |
|
{ |
|
if ( m_pPlayer ) |
|
{ |
|
CTFWeaponInvis *pWpn = (CTFWeaponInvis *) m_pPlayer->Weapon_OwnsThisID( TF_WEAPON_INVIS ); |
|
if ( pWpn && pWpn->HasFeignDeath() ) |
|
return true; |
|
} |
|
|
|
return false; |
|
} |
|
virtual const char *GetResFile( void ) { return "resource/UI/HudItemEffectMeter.res"; } |
|
virtual int GetCount( void ) { return -1; } |
|
virtual bool ShouldFlash( void ) { return false; } |
|
virtual bool ShowPercentSymbol( void ) { return false; } |
|
|
|
virtual Color GetFgColor( void ) { return Color( 255, 255, 255, 255 ); } |
|
virtual bool IsKillstreakMeter( void ) { return false; } |
|
|
|
protected: |
|
vgui::Label *m_pLabel; |
|
vgui::ContinuousProgressBar *m_pProgressBar; |
|
float m_flOldProgress; |
|
|
|
protected: |
|
CHandle<C_TFPlayer> m_pPlayer; |
|
bool m_bEnabled; |
|
|
|
CPanelAnimationVarAliasType( float, m_iXOffset, "x_offset", "0", "proportional_float" ); |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Template variation for weapon based meters. |
|
//----------------------------------------------------------------------------- |
|
template <class T> |
|
class CHudItemEffectMeter_Weapon : public CHudItemEffectMeter |
|
{ |
|
public: |
|
CHudItemEffectMeter_Weapon( const char *pszElementName, C_TFPlayer* pPlayer, int iWeaponID, bool bBeeps=true, const char* pszResFile=NULL ); |
|
|
|
T* GetWeapon( void ); |
|
|
|
virtual void Update( C_TFPlayer* pPlayer, const char* pSoundScript = "TFPlayer.ReCharged" ); |
|
|
|
// Effect Meter Logic |
|
virtual bool IsEnabled( void ); |
|
virtual const char* GetLabelText( void ) { return m_pWeapon ? m_pWeapon->GetEffectLabelText() : ""; } |
|
virtual const char* GetIconName( void ) { return "../hud/ico_stickybomb_red"; } |
|
virtual float GetProgress( void ); |
|
virtual bool ShouldBeep( void ) { return m_bBeeps; } |
|
virtual const char *GetResFile( void ); |
|
virtual int GetCount( void ) { return -1; } |
|
virtual bool ShouldFlash( void ) { return false; } |
|
virtual Color GetFgColor( void ) { return Color( 255, 255, 255, 255 ); } |
|
virtual bool ShouldDraw( void ); |
|
virtual bool ShowPercentSymbol( void ) { return false; } |
|
virtual bool IsKillstreakMeter( void ) { return false; } |
|
|
|
private: |
|
CHandle<T> m_pWeapon; |
|
int m_iWeaponID; |
|
bool m_bBeeps; |
|
const char* m_pszResFile; |
|
}; |
|
|
|
class CHudItemEffectMeter_Rune : public CHudItemEffectMeter |
|
{ |
|
public: |
|
|
|
CHudItemEffectMeter_Rune( const char *pszElementName, C_TFPlayer* pPlayer ); |
|
|
|
// Effect Meter Logic |
|
virtual bool IsEnabled( void ); |
|
virtual float GetProgress( void ); |
|
virtual bool ShouldDraw( void ); |
|
|
|
virtual const char* GetLabelText( void ) { return "Powerup"; } |
|
virtual const char *GetResFile( void ) { return "resource/UI/HudPowerupEffectMeter.res"; } |
|
|
|
virtual int GetCount( void ) { return -1; } |
|
virtual bool ShouldFlash( void ); |
|
virtual Color GetFgColor( void ) { return Color( 255, 255, 255, 255 ); } |
|
}; |
|
|
|
#ifdef STAGING_ONLY |
|
class CHudItemEffectMeter_SpaceJump : public CHudItemEffectMeter |
|
{ |
|
public: |
|
|
|
CHudItemEffectMeter_SpaceJump( const char *pszElementName, C_TFPlayer* pPlayer ); |
|
|
|
// Effect Meter Logic |
|
virtual bool IsEnabled( void ); |
|
virtual float GetProgress( void ); |
|
virtual bool ShouldDraw( void ); |
|
|
|
virtual const char* GetLabelText( void ) { return "Fuel"; } |
|
virtual const char *GetResFile( void ) { return "resource/UI/HudItemEffectMeter.res"; } |
|
|
|
virtual int GetCount( void ) { return -1; } |
|
virtual bool ShouldFlash( void ) { return false; } |
|
virtual Color GetFgColor( void ) { return Color( 255, 255, 255, 255 ); } |
|
}; |
|
|
|
class CHudItemEffectMeter_Tranq : public CHudItemEffectMeter |
|
{ |
|
public: |
|
|
|
CHudItemEffectMeter_Tranq( const char *pszElementName, C_TFPlayer* pPlayer ); |
|
|
|
// Effect Meter Logic |
|
virtual bool IsEnabled( void ); |
|
virtual float GetProgress( void ); |
|
|
|
virtual const char* GetLabelText( void ) { return "Finesse"; } |
|
virtual const char *GetResFile( void ) { return "resource/UI/HudItemEffectMeter_Tranq.res"; } |
|
|
|
virtual int GetCount( void ) { return -1; } |
|
virtual bool ShouldFlash( void ) { return false; } |
|
virtual Color GetFgColor( void ) { return Color( 255, 255, 255, 255 ); } |
|
}; |
|
#endif // STAGING_ONLY |
|
|
|
#endif |