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.
138 lines
4.4 KiB
138 lines
4.4 KiB
![]()
4 years ago
|
//========= 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
|