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.
140 lines
4.3 KiB
140 lines
4.3 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
//=============================================================================//
|
||
|
#ifndef TF_LOBBYPANEL_COMP_H
|
||
|
#define TF_LOBBYPANEL_COMP_H
|
||
|
|
||
|
#include "cbase.h"
|
||
|
#include "game/client/iviewport.h"
|
||
|
#include "tf_lobbypanel.h"
|
||
|
#include "tf_leaderboardpanel.h"
|
||
|
#include "local_steam_shared_object_listener.h"
|
||
|
|
||
|
// memdbgon must be the last include file in a .cpp file!!!
|
||
|
#include <tier0/memdbgon.h>
|
||
|
|
||
|
using namespace GCSDK;
|
||
|
|
||
|
class CBaseLobbyPanel;
|
||
|
|
||
|
namespace vgui
|
||
|
{
|
||
|
class ScrollableEditablePanel;
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CLadderLobbyLeaderboard : public CTFLeaderboardPanel
|
||
|
{
|
||
|
DECLARE_CLASS_SIMPLE( CLadderLobbyLeaderboard, CTFLeaderboardPanel );
|
||
|
public:
|
||
|
|
||
|
CLadderLobbyLeaderboard( Panel *pParent, const char *pszPanelName );
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Create leaderboard panels
|
||
|
//-----------------------------------------------------------------------------
|
||
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ) OVERRIDE;
|
||
|
virtual void PerformLayout() OVERRIDE;
|
||
|
virtual void OnCommand( const char *command ) OVERRIDE;
|
||
|
|
||
|
virtual bool GetLeaderboardData( CUtlVector< LeaderboardEntry_t* >& scores );
|
||
|
virtual bool UpdateLeaderboards();
|
||
|
|
||
|
void SetLeaderboard( const char *pszLeaderboardName, bool bGlobal );
|
||
|
|
||
|
const char *GetLeaderboardName() const { return m_pszLeaderboardName; }
|
||
|
bool IsDataValid( void ) { return m_bIsDataValid; }
|
||
|
|
||
|
private:
|
||
|
const char *m_pszLeaderboardName;
|
||
|
bool m_bGlobal;
|
||
|
bool m_bIsDataValid;
|
||
|
|
||
|
vgui::ScrollableEditablePanel *m_pScoreListScroller;
|
||
|
EditablePanel *m_pScoreList;
|
||
|
|
||
|
CTFTextToolTip *m_pToolTip;
|
||
|
vgui::EditablePanel *m_pToolTipEmbeddedPanel;
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CLobbyPanel_Comp : public CBaseLobbyPanel, public CLocalSteamSharedObjectListener
|
||
|
{
|
||
|
DECLARE_CLASS_SIMPLE( CLobbyPanel_Comp, CBaseLobbyPanel );
|
||
|
|
||
|
public:
|
||
|
CLobbyPanel_Comp( vgui::Panel *pParent, CBaseLobbyContainerFrame* pLobbyContainer );
|
||
|
virtual ~CLobbyPanel_Comp();
|
||
|
|
||
|
//
|
||
|
// Panel overrides
|
||
|
//
|
||
|
virtual void PerformLayout() OVERRIDE;
|
||
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ) OVERRIDE;
|
||
|
virtual void OnCommand( const char *command ) OVERRIDE;
|
||
|
|
||
|
virtual EMatchGroup GetMatchGroup( void ) const OVERRIDE;
|
||
|
|
||
|
virtual void SOCreated( const CSteamID & steamIDOwner, const CSharedObject *pObject, ESOCacheEvent eEvent ) OVERRIDE;
|
||
|
virtual void SOUpdated( const CSteamID & steamIDOwner, const CSharedObject *pObject, ESOCacheEvent eEvent ) OVERRIDE;
|
||
|
|
||
|
virtual void OnThink() OVERRIDE;
|
||
|
|
||
|
//
|
||
|
// CGameEventListener overrides
|
||
|
//
|
||
|
virtual void FireGameEvent( IGameEvent *event ) OVERRIDE;
|
||
|
|
||
|
private:
|
||
|
virtual bool ShouldShowLateJoin() const OVERRIDE;
|
||
|
virtual void ApplyChatUserSettings( const LobbyPlayerInfo &player,KeyValues *pKV ) const OVERRIDE;
|
||
|
virtual const char* GetResFile() const OVERRIDE { return "Resource/UI/LobbyPanel_Comp.res"; }
|
||
|
|
||
|
CPanelAnimationVarAliasType( int, m_iStatMedalWidth, "stat_medal_width", "14", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iMedalCountWidth, "stat_medal_count_width", "20", "proportional_int" );
|
||
|
CPanelAnimationVarAliasType( int, m_iHasPassWidth, "has_pass_width", "12", "proportional_int" );
|
||
|
|
||
|
CUtlVector<vgui::Label *> m_vecSearchCriteriaLabels;
|
||
|
|
||
|
// leaderboards
|
||
|
CLadderLobbyLeaderboard *m_pCompetitiveModeLeaderboard;
|
||
|
|
||
|
vgui::HFont m_fontMedalsCount;
|
||
|
|
||
|
enum EMatchHistorySortMethods_t
|
||
|
{
|
||
|
SORT_BY_RESULT = 0,
|
||
|
SORT_BY_DATE,
|
||
|
SORT_BY_MAP,
|
||
|
SORT_BY_KDR,
|
||
|
|
||
|
NUM_SORT_METHODS
|
||
|
};
|
||
|
|
||
|
CScrollableList* m_pMatchHistoryScroller;
|
||
|
EMatchHistorySortMethods_t m_eMatchSortMethod;
|
||
|
bool m_bDescendingMatchHistorySort;
|
||
|
|
||
|
float m_flCompetitiveRankProgress;
|
||
|
float m_flCompetitiveRankPrevProgress;
|
||
|
float m_flRefreshPlayerListTime;
|
||
|
bool m_bCompetitiveRankChangePlayedSound;
|
||
|
bool m_bMatchHistoryLoaded;
|
||
|
|
||
|
void WriteGameSettingsControls() OVERRIDE;
|
||
|
|
||
|
int GetMedalCountForStat( EMatchGroup unLadderType, RankStatType_t nStatType, int nMedalLevel );
|
||
|
|
||
|
|
||
|
void UpdateMatchDataForLocalPlayer();
|
||
|
bool m_bMatchDataForLocalPlayerDirty;
|
||
|
};
|
||
|
|
||
|
#endif //TF_LOBBYPANEL_COMP_H
|