diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /sp/src/game/client/hud_controlpointicons.h | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'sp/src/game/client/hud_controlpointicons.h')
| -rw-r--r-- | sp/src/game/client/hud_controlpointicons.h | 876 |
1 files changed, 438 insertions, 438 deletions
diff --git a/sp/src/game/client/hud_controlpointicons.h b/sp/src/game/client/hud_controlpointicons.h index 46e2fc93..c660ca73 100644 --- a/sp/src/game/client/hud_controlpointicons.h +++ b/sp/src/game/client/hud_controlpointicons.h @@ -1,438 +1,438 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-//=============================================================================
-
-#ifndef HUD_CONTROLPOINTICONS_H
-#define HUD_CONTROLPOINTICONS_H
-#ifdef _WIN32
-#pragma once
-#endif
-
-#include "cbase.h"
-#include "hudelement.h"
-#include <vgui_controls/Panel.h>
-#include <vgui_controls/Label.h>
-#include <vgui_controls/ImagePanel.h>
-#include "vgui_controls/EditablePanel.h"
-#include "vgui_controls/AnimationController.h"
-#include "vgui_controls/CircularProgressBar.h"
-#include <vgui/ISurface.h>
-#include "tf_controls.h"
-#include "IconPanel.h"
-
-#define PULSE_TIME_PER_ICON 1.5f
-
-#define PULSE_RAMP_TIME 0.5
-#define PULSE_REMAP_SIZE 6.0
-#define FAKE_CAPTURE_TIME 5.0
-#define FAKE_CAPTURE_POST_PAUSE 2.0
-
-extern ConVar mp_capstyle;
-extern ConVar mp_blockstyle;
-
-#define STARTCAPANIM_SWOOP_LENGTH 0.4
-#define STARTCAPANIM_ICON_SWITCH 0.15
-#define FINISHCAPANIM_SWOOP_LENGTH 0.2
-
-#define CAP_BOX_INDENT_X XRES(2)
-#define CAP_BOX_INDENT_Y YRES(2)
-
-#define CP_TEXTURE_COUNT 8
-
-class CControlPointIcon;
-
-// Options for how the cap progress teardrop positions itself around the cap point icon
-enum
-{
- CP_DIR_N,
- CP_DIR_NW,
- CP_DIR_NE,
-};
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-class CControlPointCountdown : public vgui::EditablePanel
-{
- DECLARE_CLASS_SIMPLE( CControlPointCountdown, vgui::EditablePanel );
-
-public:
- CControlPointCountdown(Panel *parent, const char *name);
-
- virtual void ApplySchemeSettings( IScheme *scheme );
- virtual void PerformLayout();
- virtual void OnTick( void );
-
- void SetUnlockTime( float flTime );
- float GetUnlockTime( void ){ return m_flUnlockTime; }
-
-private:
-
- bool m_bFire5SecRemain;
- bool m_bFire4SecRemain;
- bool m_bFire3SecRemain;
- bool m_bFire2SecRemain;
- bool m_bFire1SecRemain;
- bool m_bFire0SecRemain;
-
- int m_flUnlockTime;
-};
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-class CControlPointProgressBar : public vgui::EditablePanel
-{
- DECLARE_CLASS_SIMPLE( CControlPointProgressBar, vgui::EditablePanel );
-public:
- CControlPointProgressBar(Panel *parent);
-
- virtual void ApplySchemeSettings( IScheme *pScheme );
- virtual void PerformLayout( void );
- virtual void Paint( void );
- virtual bool IsVisible( void );
- virtual void Reset( void );
-
- void SetupForPoint( CControlPointIcon *pIcon );
- void UpdateBarText( void );
-
-private:
- CControlPointIcon *m_pAttachedToIcon;
- vgui::CircularProgressBar *m_pBar;
- vgui::Label *m_pBarText;
- CIconPanel *m_pTeardrop;
- CIconPanel *m_pTeardropSide;
- CIconPanel *m_pBlocked;
- int m_iOrgHeight;
- int m_iMidGroupIndex;
-};
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-class CControlPointIconSwoop : public vgui::ImagePanel, public CGameEventListener
-{
- DECLARE_CLASS_SIMPLE( CControlPointIconSwoop, vgui::ImagePanel );
-public:
- CControlPointIconSwoop(Panel *parent, const char *name) : vgui::ImagePanel( parent, name )
- {
- SetImage( "../sprites/obj_icons/capture_highlight" );
- SetShouldScaleImage( true );
- ListenForGameEvent( "localplayer_changeteam" );
- }
-
- virtual void PaintBackground( void )
- {
- float flElapsedTime = (gpGlobals->curtime - m_flStartCapAnimStart);
-
- if (GetImage())
- {
- surface()->DrawSetColor(255, 255, 255, 255);
- int iYPos = RemapValClamped( flElapsedTime, 0, STARTCAPANIM_SWOOP_LENGTH, 0, GetTall() );
- GetImage()->SetPos( 0, iYPos );
- GetImage()->Paint();
- }
-
- // Once we've finished the swoop, go away
- if ( flElapsedTime >= STARTCAPANIM_SWOOP_LENGTH )
- {
- SetVisible( false );
- }
- }
-
- virtual bool IsVisible( void )
- {
- if ( IsInFreezeCam() == true )
- return false;
-
- return BaseClass::IsVisible();
- }
-
- void StartSwoop( void )
- {
- m_flStartCapAnimStart = gpGlobals->curtime;
- }
-
- void FireGameEvent( IGameEvent * event )
- {
- if ( FStrEq( "localplayer_changeteam", event->GetName() ) )
- {
- SetVisible( false );
- }
- }
-
-private:
- float m_flStartCapAnimStart;
-};
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-class CControlPointIconCapArrow : public vgui::Panel
-{
- DECLARE_CLASS_SIMPLE( CControlPointIconCapArrow, vgui::Panel );
-public:
- CControlPointIconCapArrow( CControlPointIcon *pIcon, Panel *parent, const char *name);
-
- virtual void Paint( void );
- virtual bool IsVisible( void );
-
- void SetImage( const char *pszImage )
- {
- m_pArrowMaterial = materials->FindMaterial( pszImage, TEXTURE_GROUP_VGUI );
- }
-
-private:
- IMaterial *m_pArrowMaterial;
- CControlPointIcon *m_pAttachedToIcon;
-
-};
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-class CControlPointIconCapturePulse : public vgui::ImagePanel
-{
- DECLARE_CLASS_SIMPLE( CControlPointIconCapturePulse, vgui::ImagePanel );
-public:
- CControlPointIconCapturePulse(Panel *parent, const char *name) : vgui::ImagePanel( parent, name )
- {
- SetImage( "../sprites/obj_icons/icon_obj_white" );
- SetShouldScaleImage( true );
- }
-
- virtual void PaintBackground( void )
- {
- if ( m_flFinishCapAnimStart && gpGlobals->curtime > m_flFinishCapAnimStart )
- {
- float flElapsedTime = MAX( 0, (gpGlobals->curtime - m_flFinishCapAnimStart) );
- if (GetImage())
- {
- surface()->DrawSetColor(255, 255, 255, 255);
- int iSize = RemapValClamped( flElapsedTime, 0, FINISHCAPANIM_SWOOP_LENGTH, GetWide(), m_iShrinkSize );
- GetImage()->SetPos( (GetWide() - iSize)*0.5, (GetTall() - iSize)*0.5 );
- GetImage()->SetSize( iSize, iSize );
- GetImage()->Paint();
- }
-
- // Once we've finished the swoop, go away
- if ( flElapsedTime >= FINISHCAPANIM_SWOOP_LENGTH )
- {
- SetVisible( false );
- }
- }
- }
-
- void StartPulse( float flTime, int iShrinkSize )
- {
- m_flFinishCapAnimStart = flTime;
- m_iShrinkSize = iShrinkSize;
-
- if ( GetWide() < m_iShrinkSize )
- {
- SetWide( m_iShrinkSize );
- }
- }
-
- virtual bool IsVisible( void )
- {
- if ( IsInFreezeCam() == true )
- return false;
-
- return BaseClass::IsVisible();
- }
-
-private:
- float m_flFinishCapAnimStart;
- int m_iShrinkSize;
-};
-
-//-----------------------------------------------------------------------------
-// Purpose: The base image in the cap point icons that pulses.
-//-----------------------------------------------------------------------------
-class CControlPointIconPulseable : public vgui::ImagePanel
-{
- DECLARE_CLASS_SIMPLE( CControlPointIconPulseable, vgui::ImagePanel );
-public:
- CControlPointIconPulseable(Panel *parent, const char *name, int iIndex) : vgui::ImagePanel( parent, name )
- {
- SetShouldScaleImage( true );
- m_pPulseImage = NULL;
- m_iCPIndex = iIndex;
- }
-
- virtual void ApplySchemeSettings( IScheme *pScheme );
- virtual void OnSizeChanged(int newWide, int newTall);
- virtual void PaintBackground( void );
-
- void StartPulsing( float flDelay, float flPulseTime, bool bAccelerate );
- void StopPulsing( void );
-
- virtual bool IsVisible( void )
- {
- if ( IsInFreezeCam() == true )
- return false;
-
- return BaseClass::IsVisible();
- }
-
-private:
- int m_iCPIndex;
- float m_flStartCapAnimStart;
- float m_flPulseTime;
- bool m_bAccelerateOverCapture;
- IImage *m_pPulseImage;
-};
-
-//-----------------------------------------------------------------------------
-// Purpose: A single icon that shows the state of one control point
-//-----------------------------------------------------------------------------
-class CControlPointIcon : public vgui::EditablePanel, public CHudElement
-{
- DECLARE_CLASS_SIMPLE( CControlPointIcon, vgui::EditablePanel );
-public:
- CControlPointIcon( Panel *parent, const char *pName, int iIndex );
- ~CControlPointIcon( void );
-
- virtual void ApplySchemeSettings( IScheme *scheme );
- virtual void PerformLayout( void );
-
- void UpdateImage( void );
- void UpdateCapImage( void );
- bool IsPointLocked( void );
- int GetCapIndex( void ) { return m_iCPIndex; }
- void SetSwipeUp( bool bUp ) { m_bSwipeUp = bUp; }
- bool ShouldSwipeUp( void ) { return m_bSwipeUp; }
- int GetCapProgressDir( void ) { return m_iCapProgressDir; }
- void SetCapProgressDir( int iDir ) { m_iCapProgressDir = iDir; }
- void FakePulse( float flTime );
- bool IsVisible( void );
- virtual void Paint( void );
- bool IsPointUnlockCountdownRunning( void );
-
- virtual void FireGameEvent( IGameEvent *event );
-
- void SetUnlockTime( float flTime )
- {
- if ( m_pCountdown )
- {
- m_pCountdown->SetUnlockTime( flTime );
- }
- }
-
- void SetTimerTime( float flTime ); // used to display CCPTimerLogic countdowns
-
-private:
- virtual void OnTick();
-
-private:
- int m_iCPIndex;
- vgui::ImagePanel *m_pOverlayImage;
- CControlPointIconPulseable *m_pBaseImage;
- CControlPointIconCapArrow *m_pCapImage;
- DHANDLE< CControlPointIconSwoop > m_pCapHighlightImage;
- DHANDLE< CControlPointIconCapturePulse > m_pCapPulseImage;
- vgui::ImagePanel *m_pCapPlayerImage;
- vgui::Label *m_pCapNumPlayers;
- bool m_bSwipeUp;
- float m_flStartCapAnimStart;
- int m_iCapProgressDir;
- int m_iPrevCappers;
- bool m_bCachedLockedState;
-
- bool m_bCachedCountdownState;
- CControlPointCountdown *m_pCountdown;
-
- DHANDLE< CExLabel > m_pCPTimerLabel; // used to display CCPTimerLogic countdowns
- DHANDLE< vgui::ImagePanel > m_pCPTimerBG; // used to display CCPTimerLogic countdowns
- float m_flCPTimerTime;
- bool m_bRedText;
- Color m_cRegularColor;
- Color m_cHighlightColor;
-};
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-class CHudControlPointIcons : public CHudElement, public vgui::Panel
-{
-public:
- DECLARE_CLASS_SIMPLE( CHudControlPointIcons, vgui::Panel );
-
- CHudControlPointIcons( const char *pName );
- virtual ~CHudControlPointIcons( void );
-
- virtual void ApplySchemeSettings( IScheme *scheme );
- virtual void PerformLayout( void );
- virtual void Paint();
- virtual void Init();
- virtual void Reset();
- virtual bool IsVisible( void );
- virtual void LevelShutdown( void );
-
- virtual bool ShouldDraw( void )
- {
- return IsVisible();
- }
-
- virtual void FireGameEvent( IGameEvent *event );
-
- void UpdateProgressBarFor( int iIndex );
- void InitIcons();
- void ShutdownIcons();
- void DrawBackgroundBox( int xpos, int ypos, int nBoxWidth, int nBoxHeight, bool bCutCorner );
- bool PaintTeamBaseIcon( int index, float flXPos, float flYPos, float flIconSize );
-
- bool IsFakingCapture( int index = -1, bool *bMult = NULL, float *flFakeTime = NULL )
- {
- if ( m_bFakingCapture && m_flFakeCaptureTime < gpGlobals->curtime )
- {
- m_iCurrentCP = -1;
- m_bFakingCapture = false;
- m_bFakingCaptureMult = false;
- }
-
- if ( bMult) *bMult = m_bFakingCaptureMult;
- if ( flFakeTime ) *flFakeTime = m_flFakeCaptureTime;
- return (m_bFakingCapture && (index == -1 || index == m_iCurrentCP));
- }
-
-private:
- int m_iCPTextures[CP_TEXTURE_COUNT];
- int m_iCPCappingTextures[CP_TEXTURE_COUNT];
- int m_iTeamBaseTextures[MAX_TEAMS];
-
- int m_iBackgroundTexture;
- Color m_clrBackground;
- Color m_clrBorder;
-
- int m_iCurrentCP; // the index of the control point the local is currently in
- int m_iLastCP; // the index of the control point the local player was last in
-
- // Capture faking for Intros
- float m_flPulseTime;
- bool m_bFakingCapture;
- bool m_bFakingCaptureMult;
- float m_flFakeCaptureTime;
-
- CPanelAnimationVar( vgui::HFont, m_hTextFont, "ChatFont", "Default" );
-
- CPanelAnimationVarAliasType( int, m_nCornerCutSize, "CornerCutSize", "5", "proportional_int" );
- CPanelAnimationVarAliasType( int, m_nBackgroundOverlap, "BackgroundOverlap", "5", "proportional_int" );
-
- CPanelAnimationVarAliasType( int, m_iIconStartX, "icon_start_x", "10", "proportional_int" );
- CPanelAnimationVarAliasType( int, m_iIconStartY, "icon_start_y", "10", "proportional_int" );
- CPanelAnimationVarAliasType( float, m_flIconExpand, "icon_expand", "0", "proportional_float" );
- CPanelAnimationVarAliasType( int, m_iIconSize, "iconsize", "24", "proportional_int" );
-
-
- CPanelAnimationVarAliasType( int, m_iIconGapWidth, "separator_width", "7", "proportional_int" );
- CPanelAnimationVarAliasType( int, m_iIconGapHeight, "separator_height", "9", "proportional_int" );
- CPanelAnimationVarAliasType( int, m_nHeightOffset, "height_offset", "0", "proportional_int" );
-
- CUtlVector<CControlPointIcon *> m_Icons;
-};
-
-#endif // HUD_CONTROLPOINTICONS_H
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//============================================================================= + +#ifndef HUD_CONTROLPOINTICONS_H +#define HUD_CONTROLPOINTICONS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "cbase.h" +#include "hudelement.h" +#include <vgui_controls/Panel.h> +#include <vgui_controls/Label.h> +#include <vgui_controls/ImagePanel.h> +#include "vgui_controls/EditablePanel.h" +#include "vgui_controls/AnimationController.h" +#include "vgui_controls/CircularProgressBar.h" +#include <vgui/ISurface.h> +#include "tf_controls.h" +#include "IconPanel.h" + +#define PULSE_TIME_PER_ICON 1.5f + +#define PULSE_RAMP_TIME 0.5 +#define PULSE_REMAP_SIZE 6.0 +#define FAKE_CAPTURE_TIME 5.0 +#define FAKE_CAPTURE_POST_PAUSE 2.0 + +extern ConVar mp_capstyle; +extern ConVar mp_blockstyle; + +#define STARTCAPANIM_SWOOP_LENGTH 0.4 +#define STARTCAPANIM_ICON_SWITCH 0.15 +#define FINISHCAPANIM_SWOOP_LENGTH 0.2 + +#define CAP_BOX_INDENT_X XRES(2) +#define CAP_BOX_INDENT_Y YRES(2) + +#define CP_TEXTURE_COUNT 8 + +class CControlPointIcon; + +// Options for how the cap progress teardrop positions itself around the cap point icon +enum +{ + CP_DIR_N, + CP_DIR_NW, + CP_DIR_NE, +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CControlPointCountdown : public vgui::EditablePanel +{ + DECLARE_CLASS_SIMPLE( CControlPointCountdown, vgui::EditablePanel ); + +public: + CControlPointCountdown(Panel *parent, const char *name); + + virtual void ApplySchemeSettings( IScheme *scheme ); + virtual void PerformLayout(); + virtual void OnTick( void ); + + void SetUnlockTime( float flTime ); + float GetUnlockTime( void ){ return m_flUnlockTime; } + +private: + + bool m_bFire5SecRemain; + bool m_bFire4SecRemain; + bool m_bFire3SecRemain; + bool m_bFire2SecRemain; + bool m_bFire1SecRemain; + bool m_bFire0SecRemain; + + int m_flUnlockTime; +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CControlPointProgressBar : public vgui::EditablePanel +{ + DECLARE_CLASS_SIMPLE( CControlPointProgressBar, vgui::EditablePanel ); +public: + CControlPointProgressBar(Panel *parent); + + virtual void ApplySchemeSettings( IScheme *pScheme ); + virtual void PerformLayout( void ); + virtual void Paint( void ); + virtual bool IsVisible( void ); + virtual void Reset( void ); + + void SetupForPoint( CControlPointIcon *pIcon ); + void UpdateBarText( void ); + +private: + CControlPointIcon *m_pAttachedToIcon; + vgui::CircularProgressBar *m_pBar; + vgui::Label *m_pBarText; + CIconPanel *m_pTeardrop; + CIconPanel *m_pTeardropSide; + CIconPanel *m_pBlocked; + int m_iOrgHeight; + int m_iMidGroupIndex; +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CControlPointIconSwoop : public vgui::ImagePanel, public CGameEventListener +{ + DECLARE_CLASS_SIMPLE( CControlPointIconSwoop, vgui::ImagePanel ); +public: + CControlPointIconSwoop(Panel *parent, const char *name) : vgui::ImagePanel( parent, name ) + { + SetImage( "../sprites/obj_icons/capture_highlight" ); + SetShouldScaleImage( true ); + ListenForGameEvent( "localplayer_changeteam" ); + } + + virtual void PaintBackground( void ) + { + float flElapsedTime = (gpGlobals->curtime - m_flStartCapAnimStart); + + if (GetImage()) + { + surface()->DrawSetColor(255, 255, 255, 255); + int iYPos = RemapValClamped( flElapsedTime, 0, STARTCAPANIM_SWOOP_LENGTH, 0, GetTall() ); + GetImage()->SetPos( 0, iYPos ); + GetImage()->Paint(); + } + + // Once we've finished the swoop, go away + if ( flElapsedTime >= STARTCAPANIM_SWOOP_LENGTH ) + { + SetVisible( false ); + } + } + + virtual bool IsVisible( void ) + { + if ( IsInFreezeCam() == true ) + return false; + + return BaseClass::IsVisible(); + } + + void StartSwoop( void ) + { + m_flStartCapAnimStart = gpGlobals->curtime; + } + + void FireGameEvent( IGameEvent * event ) + { + if ( FStrEq( "localplayer_changeteam", event->GetName() ) ) + { + SetVisible( false ); + } + } + +private: + float m_flStartCapAnimStart; +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CControlPointIconCapArrow : public vgui::Panel +{ + DECLARE_CLASS_SIMPLE( CControlPointIconCapArrow, vgui::Panel ); +public: + CControlPointIconCapArrow( CControlPointIcon *pIcon, Panel *parent, const char *name); + + virtual void Paint( void ); + virtual bool IsVisible( void ); + + void SetImage( const char *pszImage ) + { + m_pArrowMaterial = materials->FindMaterial( pszImage, TEXTURE_GROUP_VGUI ); + } + +private: + IMaterial *m_pArrowMaterial; + CControlPointIcon *m_pAttachedToIcon; + +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CControlPointIconCapturePulse : public vgui::ImagePanel +{ + DECLARE_CLASS_SIMPLE( CControlPointIconCapturePulse, vgui::ImagePanel ); +public: + CControlPointIconCapturePulse(Panel *parent, const char *name) : vgui::ImagePanel( parent, name ) + { + SetImage( "../sprites/obj_icons/icon_obj_white" ); + SetShouldScaleImage( true ); + } + + virtual void PaintBackground( void ) + { + if ( m_flFinishCapAnimStart && gpGlobals->curtime > m_flFinishCapAnimStart ) + { + float flElapsedTime = MAX( 0, (gpGlobals->curtime - m_flFinishCapAnimStart) ); + if (GetImage()) + { + surface()->DrawSetColor(255, 255, 255, 255); + int iSize = RemapValClamped( flElapsedTime, 0, FINISHCAPANIM_SWOOP_LENGTH, GetWide(), m_iShrinkSize ); + GetImage()->SetPos( (GetWide() - iSize)*0.5, (GetTall() - iSize)*0.5 ); + GetImage()->SetSize( iSize, iSize ); + GetImage()->Paint(); + } + + // Once we've finished the swoop, go away + if ( flElapsedTime >= FINISHCAPANIM_SWOOP_LENGTH ) + { + SetVisible( false ); + } + } + } + + void StartPulse( float flTime, int iShrinkSize ) + { + m_flFinishCapAnimStart = flTime; + m_iShrinkSize = iShrinkSize; + + if ( GetWide() < m_iShrinkSize ) + { + SetWide( m_iShrinkSize ); + } + } + + virtual bool IsVisible( void ) + { + if ( IsInFreezeCam() == true ) + return false; + + return BaseClass::IsVisible(); + } + +private: + float m_flFinishCapAnimStart; + int m_iShrinkSize; +}; + +//----------------------------------------------------------------------------- +// Purpose: The base image in the cap point icons that pulses. +//----------------------------------------------------------------------------- +class CControlPointIconPulseable : public vgui::ImagePanel +{ + DECLARE_CLASS_SIMPLE( CControlPointIconPulseable, vgui::ImagePanel ); +public: + CControlPointIconPulseable(Panel *parent, const char *name, int iIndex) : vgui::ImagePanel( parent, name ) + { + SetShouldScaleImage( true ); + m_pPulseImage = NULL; + m_iCPIndex = iIndex; + } + + virtual void ApplySchemeSettings( IScheme *pScheme ); + virtual void OnSizeChanged(int newWide, int newTall); + virtual void PaintBackground( void ); + + void StartPulsing( float flDelay, float flPulseTime, bool bAccelerate ); + void StopPulsing( void ); + + virtual bool IsVisible( void ) + { + if ( IsInFreezeCam() == true ) + return false; + + return BaseClass::IsVisible(); + } + +private: + int m_iCPIndex; + float m_flStartCapAnimStart; + float m_flPulseTime; + bool m_bAccelerateOverCapture; + IImage *m_pPulseImage; +}; + +//----------------------------------------------------------------------------- +// Purpose: A single icon that shows the state of one control point +//----------------------------------------------------------------------------- +class CControlPointIcon : public vgui::EditablePanel, public CHudElement +{ + DECLARE_CLASS_SIMPLE( CControlPointIcon, vgui::EditablePanel ); +public: + CControlPointIcon( Panel *parent, const char *pName, int iIndex ); + ~CControlPointIcon( void ); + + virtual void ApplySchemeSettings( IScheme *scheme ); + virtual void PerformLayout( void ); + + void UpdateImage( void ); + void UpdateCapImage( void ); + bool IsPointLocked( void ); + int GetCapIndex( void ) { return m_iCPIndex; } + void SetSwipeUp( bool bUp ) { m_bSwipeUp = bUp; } + bool ShouldSwipeUp( void ) { return m_bSwipeUp; } + int GetCapProgressDir( void ) { return m_iCapProgressDir; } + void SetCapProgressDir( int iDir ) { m_iCapProgressDir = iDir; } + void FakePulse( float flTime ); + bool IsVisible( void ); + virtual void Paint( void ); + bool IsPointUnlockCountdownRunning( void ); + + virtual void FireGameEvent( IGameEvent *event ); + + void SetUnlockTime( float flTime ) + { + if ( m_pCountdown ) + { + m_pCountdown->SetUnlockTime( flTime ); + } + } + + void SetTimerTime( float flTime ); // used to display CCPTimerLogic countdowns + +private: + virtual void OnTick(); + +private: + int m_iCPIndex; + vgui::ImagePanel *m_pOverlayImage; + CControlPointIconPulseable *m_pBaseImage; + CControlPointIconCapArrow *m_pCapImage; + DHANDLE< CControlPointIconSwoop > m_pCapHighlightImage; + DHANDLE< CControlPointIconCapturePulse > m_pCapPulseImage; + vgui::ImagePanel *m_pCapPlayerImage; + vgui::Label *m_pCapNumPlayers; + bool m_bSwipeUp; + float m_flStartCapAnimStart; + int m_iCapProgressDir; + int m_iPrevCappers; + bool m_bCachedLockedState; + + bool m_bCachedCountdownState; + CControlPointCountdown *m_pCountdown; + + DHANDLE< CExLabel > m_pCPTimerLabel; // used to display CCPTimerLogic countdowns + DHANDLE< vgui::ImagePanel > m_pCPTimerBG; // used to display CCPTimerLogic countdowns + float m_flCPTimerTime; + bool m_bRedText; + Color m_cRegularColor; + Color m_cHighlightColor; +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CHudControlPointIcons : public CHudElement, public vgui::Panel +{ +public: + DECLARE_CLASS_SIMPLE( CHudControlPointIcons, vgui::Panel ); + + CHudControlPointIcons( const char *pName ); + virtual ~CHudControlPointIcons( void ); + + virtual void ApplySchemeSettings( IScheme *scheme ); + virtual void PerformLayout( void ); + virtual void Paint(); + virtual void Init(); + virtual void Reset(); + virtual bool IsVisible( void ); + virtual void LevelShutdown( void ); + + virtual bool ShouldDraw( void ) + { + return IsVisible(); + } + + virtual void FireGameEvent( IGameEvent *event ); + + void UpdateProgressBarFor( int iIndex ); + void InitIcons(); + void ShutdownIcons(); + void DrawBackgroundBox( int xpos, int ypos, int nBoxWidth, int nBoxHeight, bool bCutCorner ); + bool PaintTeamBaseIcon( int index, float flXPos, float flYPos, float flIconSize ); + + bool IsFakingCapture( int index = -1, bool *bMult = NULL, float *flFakeTime = NULL ) + { + if ( m_bFakingCapture && m_flFakeCaptureTime < gpGlobals->curtime ) + { + m_iCurrentCP = -1; + m_bFakingCapture = false; + m_bFakingCaptureMult = false; + } + + if ( bMult) *bMult = m_bFakingCaptureMult; + if ( flFakeTime ) *flFakeTime = m_flFakeCaptureTime; + return (m_bFakingCapture && (index == -1 || index == m_iCurrentCP)); + } + +private: + int m_iCPTextures[CP_TEXTURE_COUNT]; + int m_iCPCappingTextures[CP_TEXTURE_COUNT]; + int m_iTeamBaseTextures[MAX_TEAMS]; + + int m_iBackgroundTexture; + Color m_clrBackground; + Color m_clrBorder; + + int m_iCurrentCP; // the index of the control point the local is currently in + int m_iLastCP; // the index of the control point the local player was last in + + // Capture faking for Intros + float m_flPulseTime; + bool m_bFakingCapture; + bool m_bFakingCaptureMult; + float m_flFakeCaptureTime; + + CPanelAnimationVar( vgui::HFont, m_hTextFont, "ChatFont", "Default" ); + + CPanelAnimationVarAliasType( int, m_nCornerCutSize, "CornerCutSize", "5", "proportional_int" ); + CPanelAnimationVarAliasType( int, m_nBackgroundOverlap, "BackgroundOverlap", "5", "proportional_int" ); + + CPanelAnimationVarAliasType( int, m_iIconStartX, "icon_start_x", "10", "proportional_int" ); + CPanelAnimationVarAliasType( int, m_iIconStartY, "icon_start_y", "10", "proportional_int" ); + CPanelAnimationVarAliasType( float, m_flIconExpand, "icon_expand", "0", "proportional_float" ); + CPanelAnimationVarAliasType( int, m_iIconSize, "iconsize", "24", "proportional_int" ); + + + CPanelAnimationVarAliasType( int, m_iIconGapWidth, "separator_width", "7", "proportional_int" ); + CPanelAnimationVarAliasType( int, m_iIconGapHeight, "separator_height", "9", "proportional_int" ); + CPanelAnimationVarAliasType( int, m_nHeightOffset, "height_offset", "0", "proportional_int" ); + + CUtlVector<CControlPointIcon *> m_Icons; +}; + +#endif // HUD_CONTROLPOINTICONS_H |