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.
137 lines
4.4 KiB
137 lines
4.4 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef TF_HUD_MATCH_STATUS_H |
|
#define TF_HUD_MATCH_STATUS_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "GameEventListener.h" |
|
#include "hudelement.h" |
|
#include "basemodelpanel.h" |
|
#include "tf_teamstatus.h" |
|
#include "tf_matchmaking_shared.h" |
|
|
|
using namespace vgui; |
|
|
|
bool ShouldUseMatchHUD(); |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
class CRoundCounterPanel : public EditablePanel, public CGameEventListener |
|
{ |
|
public: |
|
DECLARE_CLASS_SIMPLE( CRoundCounterPanel, EditablePanel ); |
|
typedef CUtlVector< ImagePanel* > ImageVector; |
|
|
|
CRoundCounterPanel( Panel *parent, const char *panelName ); |
|
~CRoundCounterPanel(); |
|
|
|
virtual void ApplySchemeSettings(IScheme *pScheme) OVERRIDE; |
|
virtual void ApplySettings(KeyValues *inResourceData) OVERRIDE; |
|
virtual void PerformLayout() OVERRIDE; |
|
virtual void OnThink() OVERRIDE; |
|
|
|
virtual void FireGameEvent(IGameEvent * event) OVERRIDE; |
|
|
|
private: |
|
|
|
void CreateRoundPanels( ImageVector& vecImages, const char* pszName, KeyValues* pKVSettings ); |
|
|
|
enum EAlignment |
|
{ |
|
ALIGN_WEST, |
|
ALIGN_EAST |
|
}; |
|
|
|
void LayoutPanels( ImageVector& vecImages, EAlignment eAlignment, int nStartPos, int nMaxWide ); |
|
|
|
KeyValues* m_pRoundIndicatorKVs; |
|
KeyValues* m_pRoundWinIndicatorRedKV; |
|
KeyValues* m_pRoundWinIndicatorBlueKV; |
|
|
|
ImageVector m_vecRedRoundIndicators; |
|
ImageVector m_vecBlueRoundIndicators; |
|
|
|
ImageVector m_vecRedWinIndicators; |
|
ImageVector m_vecBlueWinIndicators; |
|
|
|
bool m_bCountDirty; |
|
|
|
CPanelAnimationVarAliasType( int, m_nStartingWidth, "starting_width", "10", "proportional_int" ); |
|
CPanelAnimationVarAliasType( int, m_nWidthPerRound, "width_per_round", "10", "proportional_int" ); |
|
CPanelAnimationVarAliasType( int, m_nIndicatorStartOffset, "indicator_start_offset", "8", "proportional_int" ); |
|
CPanelAnimationVarAliasType( int, m_nIndicatorPanelStep, "indicator_max_wide", "10", "proportional_int" ); |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
class CTFHudMatchStatus : public CHudElement, public EditablePanel |
|
{ |
|
DECLARE_CLASS_SIMPLE( CTFHudMatchStatus, EditablePanel ); |
|
public: |
|
CTFHudMatchStatus( const char *pElementName ); |
|
virtual ~CTFHudMatchStatus( void ); |
|
|
|
virtual void ApplySchemeSettings( IScheme *pScheme ) OVERRIDE; |
|
virtual void FireGameEvent( IGameEvent * event ) OVERRIDE; |
|
virtual void OnThink() OVERRIDE; |
|
virtual void PerformLayout() OVERRIDE; |
|
|
|
virtual bool ShouldDraw( void ) OVERRIDE; |
|
|
|
virtual void Reset() OVERRIDE; |
|
|
|
void SetPanelsVisible(); |
|
|
|
private: |
|
|
|
void ShowMatchStartDoors(); |
|
void ShowRoundSign( int nRoundNumber ); |
|
void InitPlayerList( SectionedListPanel *pPlayerList, int nTeam ); |
|
void UpdatePlayerList(); |
|
void UpdatePlayerAvatar( int playerIndex, KeyValues *kv ); |
|
void UpdateTeamInfo(); |
|
void HandleCountdown( int nTime ); |
|
|
|
CRoundCounterPanel *m_pRoundCounter; |
|
class CTFHudTimeStatus *m_pTimePanel; |
|
CModelPanel *m_pRoundSignModel; |
|
CTFTeamStatus *m_pTeamStatus; |
|
CModelPanel *m_pMatchStartModelPanel; |
|
EMatchGroup m_eMatchGroupSettings; |
|
|
|
vgui::EditablePanel *m_pBlueTeamPanel; |
|
vgui::SectionedListPanel *m_pPlayerListBlue; |
|
vgui::EditablePanel *m_pRedTeamPanel; |
|
vgui::SectionedListPanel *m_pPlayerListRed; |
|
vgui::ImageList *m_pImageList; |
|
CUtlMap<CSteamID, int> m_mapAvatarsToImageList; |
|
|
|
CAvatarImagePanel *m_pRedLeaderAvatarImage; |
|
EditablePanel *m_pRedLeaderAvatarBG; |
|
vgui::ImagePanel *m_pRedTeamImage; |
|
CExLabel *m_pRedTeamName; |
|
CAvatarImagePanel *m_pBlueLeaderAvatarImage; |
|
EditablePanel *m_pBlueLeaderAvatarBG; |
|
vgui::ImagePanel *m_pBlueTeamImage; |
|
CExLabel *m_pBlueTeamName; |
|
|
|
CPanelAnimationVar( int, m_iAvatarWidth, "avatar_width", "34" ); // Avatar width doesn't scale with resolution |
|
CPanelAnimationVarAliasType( int, m_iSpacerWidth, "spacer", "5", "proportional_int" ); |
|
CPanelAnimationVarAliasType( int, m_iNameWidth, "name_width", "136", "proportional_int" ); |
|
CPanelAnimationVarAliasType( int, m_iHorizFillInset, "horiz_inset", "4", "proportional_int" ); |
|
|
|
vgui::HFont m_hPlayerListFont; |
|
|
|
bool m_bUseMatchHUD; |
|
}; |
|
|
|
#endif // TF_HUD_MATCH_STATUS_H
|
|
|