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.
177 lines
4.9 KiB
177 lines
4.9 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef TF_TIME_PANEL_H |
|
#define TF_TIME_PANEL_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "GameEventListener.h" |
|
#include "hudelement.h" |
|
#include <vgui_controls/ImagePanel.h> |
|
|
|
using namespace vgui; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
class CTFProgressBar : public vgui::ImagePanel |
|
{ |
|
public: |
|
DECLARE_CLASS_SIMPLE( CTFProgressBar, vgui::ImagePanel ); |
|
|
|
CTFProgressBar( vgui::Panel *parent, const char *name ); |
|
|
|
virtual void Paint(); |
|
void SetPercentage( float flPercentage ){ m_flPercent = flPercentage; } |
|
|
|
private: |
|
|
|
float m_flPercent; |
|
int m_iTexture; |
|
|
|
CPanelAnimationVar( Color, m_clrActive, "color_active", "TimerProgress.Active" ); |
|
CPanelAnimationVar( Color, m_clrInActive, "color_inactive", "TimerProgress.InActive" ); |
|
CPanelAnimationVar( Color, m_clrWarning, "color_warning", "TimerProgress.Active" ); |
|
CPanelAnimationVar( float, m_flPercentWarning, "percent_warning", "0.75" ); |
|
}; |
|
|
|
|
|
// Floating delta text items, float off the top of the frame to |
|
// show changes to the timer value |
|
typedef struct |
|
{ |
|
// amount of delta |
|
int m_nAmount; |
|
|
|
// die time |
|
float m_flDieTime; |
|
|
|
} timer_delta_t; |
|
|
|
#define NUM_TIMER_DELTA_ITEMS 10 |
|
|
|
class CExLabel; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
class CTFHudTimeStatus : public vgui::EditablePanel, public CGameEventListener |
|
{ |
|
DECLARE_CLASS_SIMPLE( CTFHudTimeStatus, vgui::EditablePanel ); |
|
|
|
public: |
|
|
|
CTFHudTimeStatus( Panel *parent, const char *name ); |
|
|
|
virtual void Paint( void ); |
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
virtual void Reset(); |
|
|
|
int GetTimerIndex( void ){ return m_iTimerIndex; } |
|
void SetTimerIndex( int index ){ m_iTimerIndex = ( index >= 0 ) ? index : 0; SetExtraTimePanels(); } |
|
|
|
virtual void FireGameEvent( IGameEvent *event ); |
|
|
|
void SetTeam( int nTeam ){ m_nTeam = nTeam; } |
|
|
|
protected: |
|
|
|
virtual void OnThink(); |
|
|
|
private: |
|
|
|
void SetExtraTimePanels(); |
|
void SetTimeAdded( int iIndex, int nSeconds ); |
|
void CheckClockLabelLength( CExLabel *pLabel, vgui::Panel *pBG ); |
|
void SetTeamBackground( void ); |
|
|
|
private: |
|
|
|
float m_flNextThink; |
|
int m_iTimerIndex; |
|
bool m_bSuddenDeath; |
|
bool m_bOvertime; |
|
|
|
CExLabel *m_pTimeValue; |
|
CTFProgressBar *m_pProgressBar; |
|
|
|
vgui::ScalableImagePanel *m_pTimerBG; |
|
|
|
CExLabel *m_pWaitingForPlayersLabel; |
|
vgui::Panel *m_pWaitingForPlayersBG; |
|
|
|
CExLabel *m_pOvertimeLabel; |
|
vgui::Panel *m_pOvertimeBG; |
|
|
|
CExLabel *m_pSetupLabel; |
|
vgui::Panel *m_pSetupBG; |
|
|
|
CExLabel *m_pServerTimeLabel; |
|
vgui::Panel *m_pServerTimeLabelBG; |
|
|
|
// we'll have a second label/bg set for the SuddenDeath panel in case we want to change the look from the Overtime label |
|
CExLabel *m_pSuddenDeathLabel; |
|
vgui::Panel *m_pSuddenDeathBG; |
|
|
|
// delta stuff |
|
int m_iTimerDeltaHead; |
|
timer_delta_t m_TimerDeltaItems[NUM_TIMER_DELTA_ITEMS]; |
|
CPanelAnimationVarAliasType( float, m_flDeltaItemStartPos, "delta_item_start_y", "100", "proportional_float" ); |
|
CPanelAnimationVarAliasType( float, m_flDeltaItemEndPos, "delta_item_end_y", "0", "proportional_float" ); |
|
|
|
CPanelAnimationVarAliasType( float, m_flDeltaItemX, "delta_item_x", "0", "proportional_float" ); |
|
|
|
CPanelAnimationVar( Color, m_DeltaPositiveColor, "PositiveColor", "0 255 0 255" ); |
|
CPanelAnimationVar( Color, m_DeltaNegativeColor, "NegativeColor", "255 0 0 255" ); |
|
|
|
CPanelAnimationVar( float, m_flDeltaLifetime, "delta_lifetime", "2.0" ); |
|
|
|
CPanelAnimationVar( vgui::HFont, m_hDeltaItemFont, "delta_item_font", "Default" ); |
|
|
|
int m_nTeam; |
|
bool m_bKothMode; |
|
bool m_bCachedOvertime; |
|
}; |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
class CTFHudKothTimeStatus : public CHudElement, public vgui::EditablePanel |
|
{ |
|
DECLARE_CLASS_SIMPLE( CTFHudKothTimeStatus, vgui::EditablePanel ); |
|
|
|
public: |
|
CTFHudKothTimeStatus( const char *pElementName ); |
|
~CTFHudKothTimeStatus(); |
|
|
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
virtual void Reset(); |
|
virtual void Think(); |
|
virtual bool ShouldDraw(); |
|
virtual void SetVisible( bool bVisible ) OVERRIDE; |
|
|
|
virtual int GetRenderGroupPriority( void ) { return 80; } // higher than build menus |
|
|
|
private: |
|
void UpdateActiveTeam( void ); |
|
|
|
private: |
|
CTFHudTimeStatus *m_pBluePanel; |
|
CTFHudTimeStatus *m_pRedPanel; |
|
Panel *m_pActiveTimerBG; |
|
|
|
int m_nActiveTeam; |
|
|
|
CPanelAnimationVarAliasType( int, m_nBlueActiveXPos, "blue_active_xpos", "0", "proportional_int" ); |
|
CPanelAnimationVarAliasType( int, m_nRedActiveXPos, "red_active_xpos", "0", "proportional_int" ); |
|
}; |
|
|
|
|
|
#endif // TF_TIME_PANEL_H
|
|
|