Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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

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