Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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

//========= 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