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.
184 lines
5.9 KiB
184 lines
5.9 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================//
|
||
|
|
||
|
#ifndef TF_SCOREBOARD_H
|
||
|
#define TF_SCOREBOARD_H
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include "hud.h"
|
||
|
#include "hudelement.h"
|
||
|
#include "tf_hud_playerstatus.h"
|
||
|
#include "clientscoreboarddialog.h"
|
||
|
#include "tf_hud_mann_vs_machine_scoreboard.h"
|
||
|
|
||
|
class CAvatarImagePanel;
|
||
|
class CTFBadgePanel;
|
||
|
//class CTFStatsGraph;
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: displays the scoreboard
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
class CTFClientScoreBoardDialog : public CClientScoreBoardDialog
|
||
|
{
|
||
|
private:
|
||
|
DECLARE_CLASS_SIMPLE( CTFClientScoreBoardDialog, CClientScoreBoardDialog );
|
||
|
|
||
|
public:
|
||
|
CTFClientScoreBoardDialog( IViewPort *pViewPort );
|
||
|
virtual ~CTFClientScoreBoardDialog();
|
||
|
|
||
|
virtual void Reset() OVERRIDE;
|
||
|
virtual void Update() OVERRIDE;
|
||
|
virtual void ShowPanel( bool bShow ) OVERRIDE;
|
||
|
virtual void OnCommand( const char *command ) OVERRIDE;
|
||
|
|
||
|
int HudElementKeyInput( int down, ButtonCode_t keynum, const char *pszCurrentBinding );
|
||
|
|
||
|
struct duel_panel_t
|
||
|
{
|
||
|
vgui::EditablePanel *m_pPanel;
|
||
|
CAvatarImagePanel *m_pAvatar;
|
||
|
CExLabel *m_pPlayerNameLabel;
|
||
|
};
|
||
|
|
||
|
MESSAGE_FUNC_PTR( OnItemSelected, "ItemSelected", panel );
|
||
|
MESSAGE_FUNC_PTR( OnItemContextMenu, "ItemContextMenu", panel );
|
||
|
void OnScoreBoardMouseRightRelease( void );
|
||
|
|
||
|
MESSAGE_FUNC_PARAMS( OnReportPlayer, "ReportPlayer", pData );
|
||
|
|
||
|
protected:
|
||
|
virtual void PerformLayout();
|
||
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
|
||
|
|
||
|
virtual void PostApplySchemeSettings( vgui::IScheme *pScheme ) {};
|
||
|
|
||
|
vgui::SectionedListPanel *GetPlayerListRed( void ){ return m_pPlayerListRed; }
|
||
|
vgui::SectionedListPanel *GetPlayerListBlue( void ){ return m_pPlayerListBlue; }
|
||
|
|
||
|
private:
|
||
|
void InitPlayerList( vgui::SectionedListPanel *pPlayerList );
|
||
|
void SetPlayerListImages( vgui::SectionedListPanel *pPlayerList );
|
||
|
void UpdateTeamInfo();
|
||
|
void UpdatePlayerList();
|
||
|
void UpdateSpectatorList();
|
||
|
void UpdatePlayerDetails();
|
||
|
void UpdateServerTimeLeft();
|
||
|
void UpdateArenaWaitingToPlayList( void );
|
||
|
void ClearPlayerDetails();
|
||
|
bool ShouldShowAsSpectator( int iPlayerIndex );
|
||
|
bool ShouldShowAsArenaWaitingToPlay( int iPlayerIndex );
|
||
|
void GetCameraUnderlayBounds( int *pX, int *pY, int *pWide, int *pTall );
|
||
|
bool UseMouseMode( void );
|
||
|
void InitializeInputScheme( void );
|
||
|
|
||
|
void AdjustForVisibleScrollbar( void );
|
||
|
void UpdateBadgePanels( CUtlVector<CTFBadgePanel*> &pBadgePanels, vgui::SectionedListPanel *pPlayerList );
|
||
|
|
||
|
virtual void FireGameEvent( IGameEvent *event );
|
||
|
|
||
|
static bool TFPlayerSortFunc( vgui::SectionedListPanel *list, int itemID1, int itemID2 );
|
||
|
|
||
|
vgui::SectionedListPanel *GetSelectedPlayerList( void );
|
||
|
|
||
|
void UpdatePlayerModel();
|
||
|
|
||
|
vgui::SectionedListPanel *m_pPlayerListBlue;
|
||
|
vgui::SectionedListPanel *m_pPlayerListRed;
|
||
|
CExLabel *m_pLabelPlayerName;
|
||
|
CExLabel *m_pLabelDuelOpponentPlayerName;
|
||
|
vgui::ImagePanel *m_pImagePanelHorizLine;
|
||
|
CTFClassImage *m_pClassImage;
|
||
|
vgui::EditablePanel *m_pLocalPlayerStatsPanel;
|
||
|
vgui::EditablePanel *m_pLocalPlayerDuelStatsPanel;
|
||
|
duel_panel_t m_duelPanelLocalPlayer;
|
||
|
duel_panel_t m_duelPanelOpponent;
|
||
|
vgui::Menu *m_pRightClickMenu;
|
||
|
|
||
|
CExLabel *m_pKillsLabel;
|
||
|
CExLabel *m_pDeathsLabel;
|
||
|
CExLabel *m_pAssistLabel;
|
||
|
CExLabel *m_pDestructionLabel;
|
||
|
CExLabel *m_pCapturesLabel;
|
||
|
CExLabel *m_pDefensesLabel;
|
||
|
CExLabel *m_pDominationsLabel;
|
||
|
CExLabel *m_pRevengeLabel;
|
||
|
CExLabel *m_pHealingLabel;
|
||
|
CExLabel *m_pInvulnsLabel;
|
||
|
CExLabel *m_pTeleportsLabel;
|
||
|
CExLabel *m_pHeadshotsLabel;
|
||
|
CExLabel *m_pBackstabsLabel;
|
||
|
CExLabel *m_pBonusLabel;
|
||
|
CExLabel *m_pSupportLabel;
|
||
|
CExLabel *m_pDamageLabel;
|
||
|
|
||
|
CExLabel *m_pServerTimeLeftValue;
|
||
|
vgui::HFont m_pFontTimeLeftNumbers;
|
||
|
vgui::HFont m_pFontTimeLeftString;
|
||
|
|
||
|
CTFHudMannVsMachineScoreboard *m_pMvMScoreboard;
|
||
|
|
||
|
int m_iImageDominated;
|
||
|
int m_iImageDominatedDead;
|
||
|
int m_iImageNemesis;
|
||
|
int m_iImageNemesisDead;
|
||
|
int m_iImageStreak;
|
||
|
int m_iImageStreakDead;
|
||
|
|
||
|
int m_iImageDom[SCOREBOARD_DOMINATION_ICONS];
|
||
|
int m_iImageDomDead[SCOREBOARD_DOMINATION_ICONS];
|
||
|
int m_iImageClass[SCOREBOARD_CLASS_ICONS];
|
||
|
int m_iImageClassAlt[SCOREBOARD_CLASS_ICONS];
|
||
|
|
||
|
int m_iImagePing[SCOREBOARD_PING_ICONS];
|
||
|
int m_iImagePingDead[SCOREBOARD_PING_ICONS];
|
||
|
|
||
|
int m_iTextureCamera;
|
||
|
|
||
|
bool m_bIsPVEMode;
|
||
|
// bool m_bDisplayLevel;
|
||
|
bool m_bMouseActivated;
|
||
|
vgui::HFont m_hScoreFontDefault;
|
||
|
vgui::HFont m_hScoreFontSmallest;
|
||
|
|
||
|
CPanelAnimationVarAliasType( int, m_iSpacerWidth, "spacer", "5", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iNemesisWidth, "nemesis_width", "20", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iMedalWidth, "medal_width", "15", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iKillstreakWidth, "killstreak_width", "20", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iKillstreakImageWidth, "killstreak_image_width", "20", "proportional_int" );
|
||
|
|
||
|
CTFPlayerModelPanel *m_pPlayerModelPanel;
|
||
|
int m_nPlayerModelPanelIndex;
|
||
|
|
||
|
bool m_bRedScrollBarVisible;
|
||
|
bool m_bBlueScrollBarVisible;
|
||
|
int m_nExtraSpace;
|
||
|
|
||
|
CExLabel *m_pRedTeamName;
|
||
|
CExLabel *m_pBlueTeamName;
|
||
|
|
||
|
CAvatarImagePanel *m_pRedLeaderAvatarImage;
|
||
|
EditablePanel *m_pRedLeaderAvatarBG;
|
||
|
vgui::ImagePanel *m_pRedTeamImage;
|
||
|
CAvatarImagePanel *m_pBlueLeaderAvatarImage;
|
||
|
EditablePanel *m_pBlueLeaderAvatarBG;
|
||
|
vgui::ImagePanel *m_pBlueTeamImage;
|
||
|
|
||
|
CUtlVector< CTFBadgePanel* > m_pBlueBadgePanels;
|
||
|
CUtlVector< CTFBadgePanel* > m_pRedBadgePanels;
|
||
|
|
||
|
CHandle< C_TFPlayer > m_hSelectedPlayer;
|
||
|
bool m_bUsePlayerModel;
|
||
|
};
|
||
|
|
||
|
const wchar_t *GetPointsString( int iPoints );
|
||
|
|
||
|
#endif // TF_SCOREBOARD_H
|