//========= 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 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 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