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.
190 lines
5.0 KiB
190 lines
5.0 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef TF_HUD_FLAGSTATUS_H |
|
#define TF_HUD_FLAGSTATUS_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "entity_capture_flag.h" |
|
#include "tf_controls.h" |
|
#include "tf_imagepanel.h" |
|
#include "GameEventListener.h" |
|
#include "hudelement.h" |
|
|
|
class CCaptureFlag; |
|
class CTFFlagCalloutPanel; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Draws the rotated arrow panels |
|
//----------------------------------------------------------------------------- |
|
class CTFArrowPanel : public vgui::Panel |
|
{ |
|
public: |
|
DECLARE_CLASS_SIMPLE( CTFArrowPanel, vgui::Panel ); |
|
|
|
CTFArrowPanel( vgui::Panel *parent, const char *name ); |
|
virtual void Paint(); |
|
virtual bool IsVisible( void ); |
|
void SetEntity( EHANDLE hEntity ){ m_hEntity = hEntity; } |
|
float GetAngleRotation( void ); |
|
void OnTick( void ); |
|
|
|
private: |
|
|
|
EHANDLE m_hEntity; |
|
|
|
CMaterialReference m_RedMaterial; |
|
CMaterialReference m_BlueMaterial; |
|
CMaterialReference m_NeutralMaterial; |
|
CMaterialReference m_NeutralRedMaterial; |
|
|
|
CMaterialReference m_RedMaterialNoArrow; |
|
CMaterialReference m_BlueMaterialNoArrow; |
|
|
|
bool m_bUseRed; |
|
float m_flNextColorSwitch; |
|
IMaterial *m_pMaterial; |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
class CTFFlagStatus : public vgui::EditablePanel |
|
{ |
|
public: |
|
DECLARE_CLASS_SIMPLE( CTFFlagStatus, vgui::EditablePanel ); |
|
|
|
CTFFlagStatus( vgui::Panel *parent, const char *name ); |
|
|
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
virtual bool IsVisible( void ); |
|
void UpdateStatus( void ); |
|
|
|
void SetEntity( EHANDLE hEntity ) |
|
{ |
|
m_hEntity = hEntity; |
|
|
|
if ( m_pArrow ) |
|
{ |
|
m_pArrow->SetEntity( hEntity ); |
|
} |
|
|
|
UpdateStatus(); |
|
} |
|
|
|
CBaseEntity *GetEntity( void ){ return m_hEntity.Get(); } |
|
|
|
private: |
|
|
|
EHANDLE m_hEntity; |
|
|
|
CTFArrowPanel *m_pArrow; |
|
CTFImagePanel *m_pStatusIcon; |
|
CTFImagePanel *m_pBriefcase; |
|
}; |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
class CTFHudFlagObjectives : public vgui::EditablePanel, public CGameEventListener |
|
{ |
|
DECLARE_CLASS_SIMPLE( CTFHudFlagObjectives, vgui::EditablePanel ); |
|
|
|
public: |
|
|
|
CTFHudFlagObjectives( vgui::Panel *parent, const char *name ); |
|
|
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
virtual bool IsVisible( void ); |
|
virtual void Reset(); |
|
void OnTick(); |
|
|
|
public: // IGameEventListener: |
|
virtual void FireGameEvent( IGameEvent *event ); |
|
|
|
private: |
|
|
|
void UpdateStatus( C_BasePlayer *pNewOwner = NULL, C_BaseEntity *pFlagEntity = NULL ); |
|
void SetPlayingToLabelVisible( bool bVisible ); |
|
void SetCarriedImage( const char *pchIcon ); |
|
|
|
private: |
|
|
|
vgui::ImagePanel *m_pCarriedImage; |
|
|
|
CExLabel *m_pPlayingTo; |
|
vgui::Panel *m_pPlayingToBG; |
|
|
|
CTFFlagStatus *m_pRedFlag; |
|
CTFFlagStatus *m_pBlueFlag; |
|
CTFArrowPanel *m_pCapturePoint; |
|
|
|
bool m_bFlagAnimationPlayed; |
|
bool m_bCarryingFlag; |
|
|
|
vgui::ImagePanel *m_pSpecCarriedImage; |
|
|
|
vgui::ImagePanel *m_pPoisonImage; |
|
CExLabel *m_pPoisonTimeLabel; |
|
|
|
bool m_bPlayingHybrid_CTF_CP; |
|
bool m_bPlayingSpecialDeliveryMode; |
|
|
|
int m_nNumValidFlags; |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
class CTFFlagCalloutPanel : public CHudElement, public vgui::EditablePanel |
|
{ |
|
DECLARE_CLASS_SIMPLE( CTFFlagCalloutPanel, vgui::EditablePanel ); |
|
public: |
|
CTFFlagCalloutPanel( const char *pElementName ); |
|
~CTFFlagCalloutPanel( void ); |
|
|
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
virtual void PerformLayout( void ); |
|
virtual void OnTick( void ); |
|
virtual void PaintBackground( void ); |
|
virtual void Paint( void ); |
|
|
|
void GetCalloutPosition( const Vector &vecDelta, float flRadius, float *xpos, float *ypos, float *flRotation ); |
|
void SetFlag( CCaptureFlag *pFlag, float flDuration, Vector &vecOffset ); |
|
static CTFFlagCalloutPanel *AddFlagCalloutIfNotFound( CCaptureFlag *pFlag, float flDuration, Vector &vecLocation ); |
|
bool ShouldShowFlagIconToLocalPlayer( void ); |
|
void ScaleAndPositionCallout( float flScale = 1.f ); |
|
|
|
CHandle< CCaptureFlag > m_hFlag; |
|
|
|
private: |
|
IMaterial *m_pArrowMaterial; |
|
CTFImagePanel *m_pFlagCalloutPanel; |
|
vgui::Label *m_pFlagValueLabel; |
|
CTFImagePanel *m_pFlagStatusIcon; |
|
|
|
float m_flRemoveTime; |
|
float m_flFirstDisplayTime; |
|
Vector m_vecOffset; |
|
int m_iDrawArrow; |
|
bool m_bFlagVisible; // LOS |
|
|
|
float m_flPrevScale; |
|
int m_nPanelWideOrig; |
|
int m_nPanelTallOrig; |
|
int m_nLabelWideOrig; |
|
int m_nLabelTallOrig; |
|
int m_nIconWideOrig; |
|
int m_nIconTallOrig; |
|
|
|
static CUtlVector< CTFFlagCalloutPanel* > m_FlagCalloutPanels; |
|
}; |
|
|
|
#endif // TF_HUD_FLAGSTATUS_H
|
|
|