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.
153 lines
4.1 KiB
153 lines
4.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef CSTRIKECLIENTSCOREBOARDDIALOG_H |
|
#define CSTRIKECLIENTSCOREBOARDDIALOG_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include <clientscoreboarddialog.h> |
|
#include <vgui_controls/ImagePanel.h> |
|
#include "cs_shareddefs.h" |
|
#include <vgui_controls/Frame.h> |
|
#include "vgui_avatarimage.h" |
|
|
|
|
|
const int cMaxScoreLines = 32; // This value must be > 2 |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Game ScoreBoard |
|
//----------------------------------------------------------------------------- |
|
class CCSClientScoreBoardDialog : public CClientScoreBoardDialog |
|
{ |
|
private: |
|
DECLARE_CLASS_SIMPLE( CCSClientScoreBoardDialog, CClientScoreBoardDialog ); |
|
|
|
public: |
|
CCSClientScoreBoardDialog( IViewPort *pViewPort ); |
|
~CCSClientScoreBoardDialog(); |
|
|
|
virtual void Update(); |
|
|
|
// vgui overrides for rounded corner background |
|
void UpdateMvpElements(); |
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
|
|
virtual void ResetFromGameOverState(); |
|
|
|
// [tj] Hook in here to hide other UI |
|
virtual void ShowPanel( bool state ); |
|
|
|
// [tj] So we can do processing every frame |
|
virtual void OnThink(); |
|
|
|
protected: |
|
|
|
struct PlayerScoreInfo |
|
{ |
|
const char* szName; |
|
const char* szClanTag; |
|
int playerIndex; |
|
int frags; |
|
int deaths; |
|
int ping; |
|
const char* szStatus; |
|
bool bStatusPlayerColor; |
|
}; |
|
|
|
struct PlayerDisplay |
|
{ |
|
vgui::Label* pNameLabel; |
|
vgui::Label* pClanLabel; |
|
vgui::Label* pScoreLabel; |
|
vgui::Label* pDeathsLabel; |
|
vgui::Label* pPingLabel; |
|
vgui::Label* pMVPCountLabel; |
|
CAvatarImagePanel* pAvatar; |
|
vgui::ImagePanel* pStatusImage; |
|
vgui::ImagePanel* pMVPImage; |
|
vgui::ImagePanel* pSelect; |
|
}; |
|
|
|
struct TeamDisplayInfo |
|
{ |
|
Color playerDataColor; |
|
Color playerClanColor; |
|
PlayerDisplay playerDisplay[cMaxScoreLines]; |
|
CUtlVector<PlayerScoreInfo*> playerScores; // For sorting team members outside of the listboxes |
|
int scoreAreaInnerHeight; |
|
int scoreAreaLineHeight; |
|
int scoreAreaLinePreferredLeading; |
|
int scoreAreaStartY; |
|
int scoreAreaMinX; |
|
int scoreAreaMaxX; |
|
int maxPlayersVisible; |
|
}; |
|
|
|
bool GetPlayerScoreInfo( int playerIndex, PlayerScoreInfo& playerScoreInfo ); |
|
void UpdateTeamPlayerDisplay( TeamDisplayInfo& teamDisplay ); |
|
void SetupTeamDisplay( TeamDisplayInfo& teamDisplay, const char* szTeamPrefix ); |
|
|
|
void UpdateTeamInfo(); |
|
void UpdatePlayerList(); |
|
|
|
bool ForceLocalPlayerVisible( TeamDisplayInfo& teamDisplay ); |
|
void UpdateSpectatorList(); |
|
void UpdateHLTVList( void ); |
|
void UpdateMatchEndText(); |
|
|
|
bool ShouldShowAsSpectator( int iPlayerIndex ); |
|
void FireGameEvent( IGameEvent *event ); |
|
|
|
void UpdatePlayerColors( void ); |
|
void AdjustFontToFit( const char *pString, vgui::Label *pLabel ); |
|
|
|
static int PlayerSortFunction( PlayerScoreInfo* const* pPS1, PlayerScoreInfo* const* pPS2 ); |
|
|
|
private: |
|
vgui::HFont m_listItemFont; |
|
vgui::HFont m_listItemFontSmaller; |
|
vgui::HFont m_listItemFontSmallest; |
|
vgui::HFont m_MVPFont; |
|
|
|
int m_iImageDead; |
|
int m_iImageMVP; // Not used in the section list explicitly. Drawn over it |
|
int m_iImageDominated; |
|
int m_iImageNemesis; |
|
int m_iImageBomb; |
|
int m_iImageVIP; |
|
int m_iImageFriend; |
|
int m_iImageNemesisDead; |
|
int m_iImageDominationDead; |
|
|
|
Color m_DeadPlayerDataColor; |
|
Color m_PlayerDataBgColor; |
|
Color m_DeadPlayerClanColor; |
|
|
|
vgui::Label* m_pWinConditionLabel; |
|
vgui::Label* m_pClockLabel; |
|
vgui::Label* m_pLabelMapName; |
|
vgui::Label* m_pServerLabel; |
|
|
|
bool m_gameOver; |
|
|
|
wchar_t m_pMapName[256]; |
|
wchar_t m_pServerName[256]; |
|
wchar_t m_pStatsEnabled[256]; |
|
wchar_t m_pStatsDisabled[256]; |
|
|
|
int m_LocalPlayerItemID; |
|
int m_MVPXOffset; |
|
|
|
TeamDisplayInfo m_teamDisplayT; |
|
TeamDisplayInfo m_teamDisplayCT; |
|
}; |
|
|
|
|
|
#endif // CSTRIKECLIENTSCOREBOARDDIALOG_H
|
|
|