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.
178 lines
4.9 KiB
178 lines
4.9 KiB
5 years ago
|
//========= 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
|